JS Canvas:如何使矩形在到达边界时来回移动 [英] JS Canvas: How to make rectangle go back and forth once it reaches the boundary

查看:623
本文介绍了JS Canvas:如何使矩形在到达边界时来回移动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我将这个矩形向右移动。如何在矩形到达边界时让矩形反转它。我试图让它来回走动。

So I have this rectangle that animates across to the right. How can I get the rectangle to reverse it when it hits the boundaries. I'm trying to make it go back and forth.

<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
window.onload=function(){
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
    var x = 0;
    var y = 50;
    var width = 10;
    var height = 10;
    function animate() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillRect(x, y, width, height);
        x++;
        if(x <= 490) {
            setTimeout(animate, 33);
        }
    }
    animate();
}
</script>
</head>
<body>
  <canvas id="canvas" width="500" height="400"
    style="border: 1px solid #000000;"></canvas>
</body>
</html>


推荐答案

https://codepen.io/forTheLoveOfCode/pen/wqdpeg

那是什么你需要? (链接到上面的codepen)。

Is that what you need? (link to codepen above).

var canvas = document.getElementById("canvas_id");
var context = canvas.getContext('2d');
var x=5;
var y=5;
var velocity = 10;
   
function move(){
   canvas.width = window.innerWidth;
   canvas.height = window.innerHeight;
   x =x + velocity
   if ((x+50)>canvas.width || x<0){
    	velocity *=-1;
   }
   draw()
}

function draw(){
   context.fillStyle = "#E80C7A";
   context.strokeStyle = "#000000";
   context.lineWidth = '3';
   context.fillRect(x, y, 50, 100);
   context.strokeRect(x, y, 50, 100);
}
setInterval(move, 100);

<html>
  <body>
    <canvas id = "canvas_id">
    </canvas>
  </body>
</html>

这篇关于JS Canvas:如何使矩形在到达边界时来回移动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆