canvas弹跳小球

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<canvas id="s"></canvas>
		<script>
		var aa = document.getElementById("s");
		var canvas = aa.getContext("2d");
		aa.width = window.innerWidth;
		aa.height = window.innerHeight;
		aa.style.background = "#000000";
		var x=10
		var y=10
		var aa=0
		var nu=10//小球的速度
		
		function me(){
			canvas.clearRect(0,0,window.innerWidth,window.innerHeight)
			canvas.beginPath()
			canvas.strokeStyle="antiquewhite"
			canvas.fillStyle="aqua"
			canvas.arc(x,y,10,0,Math.PI*2,false)
			
			canvas.fill()	
			canvas.stroke()
			var n1=Math.floor(Math.random()*10)
			var n2=Math.floor(Math.random()*10)
			var n3=Math.floor(Math.random()*10)
			var n4=Math.floor(Math.random()*10)
			var n5=Math.floor(Math.random()*10)
			var n6=Math.floor(Math.random()*10)
			var n7=Math.floor(Math.random()*10)
			var n8=Math.floor(Math.random()*10)
			
			if(aa==0){
				x=x+nu
				y=y+nu					
			}
			if(aa==1){
				x=x+nu
				y=y-nu
								
			}
			if(aa==2){
				x=x-nu
				y=y+nu
			}
			if(aa==3){
				x=x-nu	
				y=y-nu							
			}
			let stop=requestAnimationFrame(me)//回调函数,解决卡顿
			//设置小球在“碰壁之后的运动方向”
			if(y+10>window.innerHeight){
				if(aa==0){
					aa=1
				}
				if(aa==2){
					aa=3
				}				
			}
			
			if(y<=10){
				if(aa==1){
					aa=0
				}
				if(aa==3){
					aa=2
				}
			}
			if(x<10){
				if(aa==3){
					aa=1
				}
				if(aa==2){
					aa=0
				}
				
			}
			if(x+10>window.innerWidth){
				if(aa==1){
					aa=3
				}
				if(aa==0){
					aa=2
				}
			}
			
		// setTimeout(function(){
		// 	cancelAnimationFrame(stop)
		// },4000)
		// cancelAnimationFrame(stop)
		
		}
		me()
		</script>
	</body> 
	
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值