canvas- ball free fall

First, the idea

  1. There is a way to stop drawing ball
  2. Move the mouse when the ball began to draw, this time changing speed, if we go to the border when the speed is reversed
  3. Mouse off to stop drawing

Second, the code

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>ball</title>
</head>
<body>
    <canvas id="canvas" width="600" height="300"></canvas>

    <script>
      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);
        // 不清楚 半透明
        ctx.fillStyle = 'rgba(255,255,255,0.3)';
        ctx.fillRect(0,0,canvas.width,canvas.height);
        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;
        }
        ball.draw();
        ball.x += ball.vx;
        ball.y += ball.vy;
        ball.vy *= .99;
        ball.vy += .25;
        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>

 

Guess you like

Origin www.cnblogs.com/it-cuiyi/p/10978650.html