JavaScript многократное нажатие - PullRequest
0 голосов
/ 21 ноября 2018

Во-первых, я хотел бы поблагодарить всех за вашу помощь и ответы.

Я работаю над проектом, который требует, чтобы пользователи нажимали клавишу и удерживали ее, это вызовет действие.

Когда пользователь нажимает другую клавишу (все еще удерживая первую клавишу), он запускает другое действие.

Однако я застрял, заставляя JavaScript распознавать одновременное нажатие двух клавиш.

var down = false;
var keys;

document.addEventListener("keydown", function (e) {
    if (down) {return;}
    down = true;
    keys = (keys || []);
    keys[e.keyCode]=true;
    if (keys[87]){
        console.log("1");

    }
    else if (keys[83]){
        console.log("2");
    }
    else if (keys[83] && keys[87]){
        console.log("sucessfull");
    }
} , false);

document.addEventListener("keyup", function (e) {
    down = false;
    keys[e.keyCode]=false;
    stop();
}, false);
<button id="up" onmousedown="Drive(1)" onmouseup="Drive(2)">UP </button>

1 Ответ

0 голосов
/ 21 ноября 2018
  1. Удалены проверки переменных 'down'
  2. Удален элемент элемента кнопки мыши - не похоже на вашу проблему?
  3. Удалено лишнее тело HTML
  4. Избавился от остального ветвления, как это было бы удовлетворено (на 87 или 83), прежде чем когда-либо достигнуть условия &&

        var keys;
    
        document.addEventListener("keydown", function (e) {
            keys = (keys || []);
            keys[e.keyCode]=true;
            if (keys[87]){
                console.log("1");
    
            }
    
            if (keys[83]){
                console.log("2");
            }
    
            if (keys[83] && keys[87]){
                console.log("sucessfull");
            }
        } , false);
    
        document.addEventListener("keyup", function (e) {
            keys[e.keyCode]=false;
            stop();
        }, false);
    
...