Каков наилучший способ обработки нескольких ключевых событий в Javascript?

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

Существует ли общий (или специфичный для Javascript) метод или способ программирования для добавления событий к определенному ключу, чтобы они выполнялись только при определенных обстоятельствах?

Конечно, это можно сделать так:

var inGame = true|false;
var inConfirmationBox = true|false;

function spaceBarHandler(){
    if(inGame){ /*shoot*/}
    else if(inConfirmationBox){ /*remove box*/}
}

document.onkeydown = function(){ /* call space bar handler if space bar was pressed */ };

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

Каков наилучший способ обработки нескольких событий для одного ключа, чтобы эти события запускались только при определенных обстоятельствах?

Ответы на вопрос(4)

Ваш ответ на вопрос