我对 Javascript 比较陌生,所以如果这是一个相当微不足道的问题,请多多包涵。
我正在尝试制作一款可以使用箭头键控制玩家的游戏。代码的简化版本(不起作用)如下所示:
class Player {
constructor(X) {
this.X = X;
}
}
class Game {
constructor() {
this.gamePlayer = new Player(0);
window.requestAnimationFrame(() => this.gameLoop());
}
playerMovement(event) {
switch (event.code) {
case "ArrowLeft":
console.log(this.gamePlayer.X);
this.gamePlayer.X -= 1;
break;
case "ArrowRight":
console.log(this.gamePlayer.X);
this.gamePlayer.X += 1;
break;
}
}
gameLoop() {
window.addEventListener("keydown",this.playerMovement);
setTimeout(() => {
window.requestAnimationFrame(() => this.gameLoop());
},50);
}
}
window.onload = () => {
let game = new Game();
};
所以,基本上,我想用左右箭头键控制 gamePlayer.X。但是,使用上面的代码,每当我按箭头键时,都会收到以下错误消息:
未捕获的类型错误:无法在 playerMovement 读取未定义的属性“X”
所以我的问题是,为什么它不能在函数 playerMovement 中读取 this.gamePlayer.X ?我应该如何更改代码以使其正常工作?