我遵循了上课的指南来制作“蛙人式”游戏。已为我提供了以下事件侦听器,以使用箭头键控制玩家的移动:
document.addEventListener('keyup', function(e) {
let allowedKeys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
player.handleInput(allowedKeys[e.keyCode]);
});
我正在尝试编写一些代码以使左,上,右,下移动功能正常工作。在本教程中,他们使用switch语句。但是,我不想复制本教程中的所有内容(我不会那样学习)。我当时想我可以全局范围化'allowKeys'并设置一个变量,但这似乎不起作用(或者我做错了...。)有人可以提供任何建议吗?以下是handleInput()的调用位置。...
class Player extends Entity{
constructor() {
super();
this.sprite += 'char-boy.png';
this.x = 2;
this.y = 5;
}
update(dt){
}
handleInput(input){
//<---------code goes here
}
}
(正在cavnas中渲染)
答案 0 :(得分:1)
如果您使用ES6模块创建和导入类,则需要将allowedKeys变量附加到window对象,以便可以在Player类中访问它。像这样:
window.allowedKeys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
然后在播放器类中,您可以取消引用window变量以提取值:
const allowedKeys = window.allowedKeys;
class Player extends Entity {...
然后,您可以从类内部引用该变量。但这并不是最好的方法。