Как я могу поймать 2+ нажатия клавиш одновременно?

Ну, в последнее время я заинтересовался созданием игр JS. (не та область, с которой у меня есть опыт, но она меня интересует).

Я знаю, что есть несколько игровых движков для JS, но я не хочу создавать игру. скорее мне интересно, как все работает / как я могу его создать.

У меня есть несколько вопросов:

  1. Кто-нибудь с предложениями, где я могу прочитать об этом? Обязательное условие (какие знания нужны).

  2. Я попытался сделать небольшую игру, что-то, идущее по прямоугольнику. Связав keyup с окном и проверив event.which чтобы получить ключ, который был нажат. Я понял, что если я нажму на 2 кнопки одновременно, будет зарегистрирована только 1 из них. как я могу преодолеть это?

    $(window).keyup(function(event){
         globalEvent = event.which;
    
    });
    

2 ответа

Решение

Чтобы прямо ответить на ваш второй вопрос.

Вот один из способов:

var keyPressed = {};

$(window).keydown(function(e) {
    keyPressed[e.which] = true;
}).keyup(function(e) {
    keyPressed[e.which] = false;
});

Теперь вы можете использовать keyPressed всякий раз, когда вы хотите определить, не нажата ли клавиша:

// wherever
var key1 = 65, key2 = 66; // A and B
if (keyPressed[key1] && keyPressed[key2]) {
    // A and B are both being pressed.
}

Чтобы обнаружить несколько нажатых клавиш, используйте события keydown и keyup.

var keys = {};

$(document).keydown(function (e) {
    keys[e.which] = true;
});

$(document).keyup(function (e) {
    delete keys[e.which];
});
Другие вопросы по тегам