Обнаружение двух клавиш клавиатуры одновременно - PullRequest
0 голосов
/ 21 декабря 2018

Я пытался с помощью этого кода обнаружить две одновременно нажимаемые стрелки клавиатуры:

document.addEventListener('keydown', event => {

    if (event.keyCode === 38) {
        console.log('up Arrow')
    }

    if (event.keyCode === 39) {
        console.log('right Arrow')
    }

})

Но это не сработает, как бы я ни старался нажимать их одновременно.

Как мне это исправить и определить, когдаобе клавиши не работают?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Здесь я использую 2 флага, чтобы проверить, если вы держите клавиши.

Если оба флага верны, это означает, что вы держите обе клавиши.Таким образом, вы можете выполнить что-либо внутри условия.

let holdKeyUp = false;
let holdKeyRight = false;

document.addEventListener('keydown', event => {

    if (event.keyCode === 38) {
        holdKeyUp = true;
    }

    if (event.keyCode === 39) {
        holdKeyRight = true;
    }
    
    if (holdKeyUp && holdKeyRight) {
        console.log("Both keys are pressed.");
    }

})

document.addEventListener('keyup', event => {

    if (event.keyCode === 38) {
        holdKeyUp = false;
    }

    if (event.keyCode === 39) {
        holdKeyRight = false;
    }

})
0 голосов
/ 21 декабря 2018

Существует только один keyCode на событие.Вы должны отслеживать клавиши, идущие вниз и вверх:

// if you keep both up and down keys down, you'll get a message
let downKeys = {}; // the set of keys currently down
document.addEventListener('keydown', event => {
    downKeys[event.keyCode] = true;
    if (downKeys[38] && downKeys[40]) {
       console.log("both down!");
    }
});
document.addEventListener('keyup', event => {
    downKeys[event.keyCode] = false;
});

(вы должны пройти полную страницу, чтобы проверить этот фрагмент)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...