Левая клавиша со стрелкой включает коды клавиш 37 и 39

Я пытаюсь запрограммировать простую программу понг, которая использует клавиши со стрелками для навигации по веслу игрока. Мне нужно проверить мгновенные коды клавиш, поэтому я создал отдельный файл js для анализа событий onkeydown и onkeyup как логических значений для нужных мне кодов клавиш. Однако, когда я набираю стрелку влево, он включает коды клавиш 37 и 39 вместе. Это не работает для правой стрелки, но у меня было это прежде, чем перепутать пробел как клавишу со стрелкой. Код в основном выглядит так:

    var KeyPressed=
    {
        Left:false,
        Right:false,
        ...
    };

    window.onkeydown =function(e) {
        e = e || window.event;
        var getKey = e.keyCode ? e.keyCode:e.charCode;
        switch (getKey) {
            case  37: KeyPressed.Left=true;
            case  39: KeyPressed.Right=true;
            ...
        }
    };

    window.onkeyup = function(e){
        e = e || window.event;
        var getKey = e.keyCode ? e.keyCode:e.charCode;
        switch (getKey){
            case  37: KeyPressed.Left=false;
            case  39: KeyPressed.Right=false;
            ...
        }
    };

1 ответ

Похоже, вы не сбрасываете левый / правый логический статус за одно нажатие. Так что вы должны, вероятно, onkeyup установите оба на false независимо.

Другие вопросы по тегам