HTML5 Canvas动画 发散的小球

www.luery.xyz


效果很不错可以试着运行看看

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<canvas id = "can" width="800" height="600"></canvas>
	</body>
	<script>
		var can = document.getElementById("can");
		var ctx = can.getContext("2d");
		var x = 100;
		//ball
		function Ball(x,y,r,cl,sp){
			this.x = x;
			this.y = y;
			this.r = r;
			this.cl = cl;
			this.sp = sp;
		}
		//改变位置
		Ball.prototype.update = function(){
			this.x += this.sp;
		}
		//呈现这个小球
		Ball.prototype.render = function(){
			ctx.beginPath();
			ctx.arc(this.x,this.y,this.r,0,2*Math.PI);
			ctx.fillStyle = this.cl;
			ctx.closePath();
			ctx.fill();
		}
		var objArr = [];
		for(var i = 0; i < 20; i++) {
			var r = parseInt(Math.random()*60 + 2);
			var sp = parseInt(Math.random()*5 + 1);
			var cl = "rgba("+parseInt(Math.random()*256)+","
							+parseInt(Math.random()*256)+"," 
							+parseInt(Math.random()*256)
							+",0.7)";
			var ball = new Ball(x,20+i*50,r,cl,sp);
			objArr[i] = ball;
		}
		
		setInterval(function(){
			ctx.clearRect(0,0,800,600);
			for(var i = 0; i< objArr.length;i++){
				objArr[i].update();
				objArr[i].render();
			}
		},1000/30);
	
	</script>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<canvas id = "can" width="800" height="600"></canvas>
	</body>
	<script>
		var can = document.getElementById("can");
		var ctx = can.getContext("2d");
		var x = 100;
		//ball
		function Ball(x,y,r,cl,spx,spy){
			this.x = x;
			this.y = y;
			this.r = r;
			this.cl = cl;
			this.spx = spx;
			this.spy = spy;
		}
		//改变位置
		Ball.prototype.update = function(){
			this.x += this.spx;
			this.y += this.spy;
		}
		//呈现这个小球
		Ball.prototype.render = function(){
			ctx.beginPath();
			ctx.arc(this.x,this.y,this.r,0,2*Math.PI);
			ctx.fillStyle = this.cl;
			ctx.closePath();
			ctx.fill();
		}
		var objArr = [];
		for(var i = 0; i < 50; i++) {
			var r = parseInt(Math.random()*60 + 2);
			var spx = parseInt(Math.random()*20 - 15);
			var spy = parseInt(Math.random()*20 - 15);
			var cl = "rgba("+parseInt(Math.random()*256)+","
							+parseInt(Math.random()*256)+"," 
							+parseInt(Math.random()*256)
							+",0.7)";
			var ball = new Ball(400,300,r,cl,spx,spy);
			objArr[i] = ball;
		}
		
		setInterval(function(){
			ctx.clearRect(0,0,800,600);
			for(var i = 0; i< objArr.length;i++){
				objArr[i].update();
				objArr[i].render();
			}
		},1000/40);
	
	</script>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值