Каковы различные способы управления функциями keyup? - PullRequest
0 голосов
/ 29 августа 2018

Я следовал учебному пособию для класса, чтобы создать игру, похожую на лягушку. Мне был предоставлен следующий слушатель событий для управления движением игрока с помощью клавиш со стрелками:

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
    }
}

(это рендеринг в кавнах)

1 Ответ

0 голосов
/ 30 августа 2018

Если вы используете модули ES6 для создания и импорта классов, вам нужно прикрепить переменную allowKeys к объекту окна, чтобы вы могли получить к нему доступ внутри класса Player. Примерно так:

window.allowedKeys = {
    37: 'left',
    38: 'up',
    39: 'right',
    40: 'down'
};

Тогда в классе проигрывателя вы сможете разыменовать переменную окна, чтобы получить значение:

const allowedKeys = window.allowedKeys;
class Player extends Entity {...

Тогда вы можете ссылаться на эту переменную внутри класса. Не самый лучший способ сделать это.

...