Как сделать так, чтобы событие нажатия клавиши срабатывало только один раз в JS

Как я могу предотвратить многократный запуск функции move(), когда я удерживаю кнопку? Я бы хотел, чтобы он срабатывал только один раз, даже если пользователь держит клавишу нажатой.

function pushbtn(event)
{
    var pressBtn = event.keyCode;
    //Move to the right
    if(pressBtn==100)
    {
        move(1933.67);


    }
    //Move to the left
    else if(pressBtn==113)
    {
        move(-1933.67);

    }
}

document.addEventListener('keypress', pushbtn);
document.addEventListener('keyup', releasebtn);

person Willy Mercier    schedule 10.08.2016    source источник


Ответы (1)


библиотека KeyPress dmaurolizer обеспечивает точный контроль над всеми событиями клавиатуры. Вы предоставляете функции обратного вызова для событий. Событие keydown отправляет необязательный параметр isRepeat, чтобы вы могли игнорировать автоповторы. Вот пример использования этой функции для управления тягой в видеоигре:

var my_combos = listener.register_many([
    {
        "keys"          : "up",
        "on_keydown"    : function(e, num, isRepeat) {
            if (isRepeat) return ;
            thrust = 0.1;
        },
        "on_keyup"      : function() {
            thrust = 0;
        }
    }
]);
person Juan Tomas    schedule 10.08.2016