【发布时间】:2014-06-28 09:59:00
【问题描述】:
当我移动对象时,它很慢并且不会沿对角线移动,只会向上、向下、向右和向左移动。
我该如何解决这个问题,这是一个好的开始方式还是我应该这样做?
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext('2d');
canvas.width = 600;
canvas.height = 600;
var object = {
height: 40,
width: 40,
x: 10,
y: 10,
color: "#FF0000"
}
document.addEventListener('keydown', function(event) {
//left
if(event.keyCode == 37) {
object.x -= 1;
}
//top
else if(event.keyCode == 38) {
object.y -= 1;
}
//right
else if(event.keyCode == 39) {
object.x += 1;
}
//bottom
else if(event.keyCode == 40) {
object.y += 1;
}
});
function renderCanvas(){
ctx.fillStyle = "#000000";
ctx.fillRect(0, 0, 600, 600);
}
function renderObject(){
ctx.fillStyle = "#FF0000";
ctx.fillRect(object.x, object.y, object.width, object.height);
}
function run(){
renderCanvas();
renderObject();
}
setInterval(run, 10);
这是jsfiddle
我是 javascript 的新手,我真的需要这方面的帮助 ;)
【问题讨论】:
-
您也许可以使用 js 或 css 关键帧为移动设置动画,使其沿对角线移动。但是您必须检查是否有 2 个箭头以某种方式被按下。就像 if (event.keyCode == 37 AND event.keyCode == 40)... 不确定它是否有效。否则,当箭头被按下时,您必须设置一个标志,并检查该标志是否与另一个箭头处于活动状态......
-
尝试取出
else if并用 ifs 替换它(否则键总是互斥的)。我不确定这是否有效……
标签: javascript html canvas keylistener frame-rate