控制 keyup 功能的不同方法有哪些?
What are different ways to control keyup functions?
我按照 class 的教程制作了 'frogger-like' 游戏。我已获得以下事件侦听器以使用箭头键控制玩家移动:
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 中渲染的)
如果您使用 ES6 模块创建和导入 classes,您需要将 allowedKeys 变量附加到 window 对象,以便您可以在 Player class。像这样:
window.allowedKeys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
然后在播放器 class 中,您将能够取消引用 window 变量以提取值:
const allowedKeys = window.allowedKeys;
class Player extends Entity {...
然后您可以从 class 中引用该变量。虽然这不是最好的方法。
我按照 class 的教程制作了 'frogger-like' 游戏。我已获得以下事件侦听器以使用箭头键控制玩家移动:
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 中渲染的)
如果您使用 ES6 模块创建和导入 classes,您需要将 allowedKeys 变量附加到 window 对象,以便您可以在 Player class。像这样:
window.allowedKeys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
然后在播放器 class 中,您将能够取消引用 window 变量以提取值:
const allowedKeys = window.allowedKeys;
class Player extends Entity {...
然后您可以从 class 中引用该变量。虽然这不是最好的方法。