有哪些不同的方法来控制键入功能?

时间:2018-08-29 20:44:29

标签: javascript canvas web-applications keyboard 2d-games

我遵循了上课的指南来制作“蛙人式”游戏。已为我提供了以下事件侦听器,以使用箭头键控制玩家的移动:

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中渲染)

1 个答案:

答案 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 {...

然后,您可以从类内部引用该变量。但这并不是最好的方法。