通过canvas变换达到的动画效果

本文介绍如何使用HTML5的Canvas API实现一个简单的动画效果,通过不断改变画布坐标旋转角度并缩放画布元素,展示了一个动态旋转并放大缩小的正方形。代码示例包括HTML、CSS和JavaScript,演示了如何利用定时器更新画布状态。
摘要由CSDN通过智能技术生成

学习了canvas的变换之后,就可以做出一个动画效果。通过定时器不断地改变画布坐标的旋转角度,并且对画布的元素进行缩放

效果如下:

 

 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	<style>
		*{
			margin:0 ;
			padding: 0;
		}
		
		html,body{
			height: 100%;
			overflow: hidden;
		}
		
		body{
			background: pink;
		}
		
		#test{
			background: white;
			position: absolute;
			left:0 ;
			top: 0;
			right: 0;
			bottom: 0;
			margin: auto;
			
		}
	</style>
	
	
	</head>

	<body>
		
	
			<canvas id="test" width="300px" height="300px ">
			<span >
				您的浏览器不支持画布元素
			</span>
			
		</canvas>
		
		<script type="text/javascript">
			window.onload = function (){
				var flag = 0;
				var testNode = document.querySelector("#test") 
				var scale = 0;
				var flagscale = 0;
  				//判断是否有画笔
				if(testNode.getContext){
					var ctx = testNode.getContext("2d") ;
					ctx.save()
					ctx.translate(150,150)
					ctx.beginPath()
					ctx.fillRect(-50,-50,100,100)
					ctx.restore()
					
					setInterval(function(){
						flag++
						ctx.clearRect(0,0,testNode.width,testNode.height)
						ctx.save()
						ctx.translate(150,150)
						ctx.rotate(flag*Math.PI/180)
						
						if(scale==100){
							flagscale =-1
						}else if(scale==0){
							flagscale=1	
						}
						scale +=flagscale 
						ctx.scale(scale/50 , scale/50)
						
						
						ctx.beginPath()
						ctx.fillRect(-50,-50,100,100)
						ctx.restore()
					},1000/60)
				}
				
			}
		</script>
		
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值