我是一名编程新手,正在尝试创建一些代码,以便通过按箭头键来移动画布上的一个正方形。我已经成功让这个正方形运动了,但它的运动不够流畅。我让它每次移动10像素,所以我明白为什么它感觉有些卡顿,因为在每个10帧差异的位置之间没有任何动画,但让它每次移动更小的增量会使它过于缓慢。我已完成的部分如下:
window.onload = function init() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
setInterval(gameLoop,50);
window.addEventListener('keydown',whatKey,true);
}
avatarX = 400
avatarY = 300
function gameLoop() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 800
canvas.height = 600
ctx.fillRect(avatarX,avatarY,50,50);
}
function whatKey(e) {
switch(e.keyCode) {
case 37:
avatarX = avatarX - 10;
break;
case 39:
avatarX = avatarX + 10;
break;
case 40:
avatarY = avatarY + 10;
break;
case 38:
avatarY = avatarY - 10;
break;
}
}
每次我按向右的箭头键时,我希望正方形以恒定速率在该方向上平滑移动。非常感谢您提前的任何帮助!