Javascript 为什么这个物体会加速??设置间隔不工作
我在游戏中成为了一名球员,但我不会用移动法。当我点击D按钮时,玩家移动10px,下一个点击D按钮时,玩家移动例如33px; 我不知道为什么Javascript 为什么这个物体会加速??设置间隔不工作,javascript,canvas,Javascript,Canvas,我在游戏中成为了一名球员,但我不会用移动法。当我点击D按钮时,玩家移动10px,下一个点击D按钮时,玩家移动例如33px; 我不知道为什么 function Player(){ let x = 0; let y = 0; this.Move = function(){ window.addEventListener("keydown", function (event) { switch (event.keyCode) {
function Player(){
let x = 0;
let y = 0;
this.Move = function(){
window.addEventListener("keydown", function (event) {
switch (event.keyCode) {
case 87: //W
console.log("w");
break;
case 83: //S
break;
case 65: //A
x--;
break;
case 68: //D
x++;
break;
}
}, true);
}
this.Draw = function(){
ctx.fillStyle="color:white";
ctx.fillRect(x,y,80,80);
}
}
setInterval(GameLoop,(1000/60));
首先定义Move,然后将其设置为keydown事件的处理程序,这样就不会为每个间隔创建新的处理程序。
函数播放器{
设x=0;
设y=0;
this.Move=functionevent{
开关事件.keyCode{
案例87://W
console.logw;
打破
案例83://S
打破
案例65://A
x-;
打破
案例68://D
x++;
打破
}
}
window.addEventListenerkeydown,this.Move,true;
this.Draw=函数{
ctx.fillStyle=颜色:白色;
ctx.fillRectx,y,80,80;
}
}
setIntervalGameLoop,1000/60;什么是GameLoop?GameLoop是一个包含player.draw的函数;设置间隔的第一个参数应该是Player。它是否包含Player.Move?因此,每次触发间隔时都会添加另一个键事件处理程序?Move是如何调用的?这段代码有这么多未知因素。我猜你一次又一次地绑定事件处理程序。