欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

canvas小球碰壁效果

程序员文章站 2022-03-18 22:17:46
分享一段代码实例,它利用canvas实现了小球碰壁效果。 代码实例如下: 转载地址:canvas小球碰壁效果一文。 涉及知识:canvas教程 ......

分享一段代码实例,它利用canvas实现了小球碰壁效果。

代码实例如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style>
canvas {
  border:2px dotted #ccc;
}
</style>
</head>
<body>
<canvas id="canvas" width="550" height="450"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var raf;
  
var ball = {
  x: 100,
  y: 100,
  vx: 5,
  vy: 2,
  radius: 25,
  color: 'blue',
  draw: function() {
    ctx.beginPath();
    ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.fillStyle = this.color;
    ctx.fill();
  }
};
  
function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ball.draw();
  ball.x += ball.vx;
  ball.y += ball.vy;
  
  if (ball.y + ball.vy > canvas.height ||
    ball.y + ball.vy < 0) {
    ball.vy = -ball.vy;
  }
  if (ball.x + ball.vx > canvas.width ||
    ball.x + ball.vx < 0) {
    ball.vx = -ball.vx;
  }
  
  raf = window.requestAnimationFrame(draw);
}
  
canvas.addEventListener('mouseover', function(e) {
  raf = window.requestAnimationFrame(draw);
});
  
canvas.addEventListener("mouseout", function(e) {
  window.cancelAnimationFrame(raf);
});
  
ball.draw();
</script>
</body>
</html>

转载地址:canvas小球碰壁效果一文。

涉及知识:canvas教程