canvas制作(小demo)---圆球碰壁反弹

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas
        {
            border: 2px dashed brown;
        }
    </style>
</head>
<body>
<canvas width="500", height="500", id="canvas"></canvas>
</body>
<script>
	var canvas = document.getElementById("canvas");
	var ctx = canvas.getContext("2d"); //创建一个画布

    function Ball(x, y, r, color)
    {
        this.x = x;
        this.y = y;
        this.r = r;
        this.color = color;

        this.dx = Math.random() * 10;
	    this.dy = Math.random() * 10;
        arr.push(this);
    }

    Ball.prototype.update = function ()
    {
        this.x += this.dx;
	    this.y += this.dy;

	    if(this.x > 500 - this.r || this.x < this.r)
        {
            this.dx = -this.dx;
        }

	    if(this.y > 500 - this.r || this.y < this.r)
	    {
		    this.dy = -this.dy;
	    }
    };

    Ball.prototype.render = function ()
    {
        ctx.beginPath();
        ctx.arc(this.x, this.y, this.r, 0, 7, false);
        ctx.fillStyle = this.color;
        ctx.fill();
    };

    var arr = [];
    setInterval(function ()
    {
    	ctx.clearRect(0, 0, 500, 500);

        for(var i = 0; i < arr.length; i++)
        {
        	arr[i].update();
        	arr[i].render();
        }
    },20);

    canvas.onmousedown = function (e) {
      new Ball(e.clientX, e.clientY, Math.random() *50, 'red');
    };
</script>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丸子哥哥

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值