Нажатие пробела в игре сделает стрельбу персонажа, нажав клавишу пробела, когда появится окно подтверждения, это окно исчезнет, и нажатие пробела в форме рекорда добавит пробел в поле ввода. В этом примере есть несколько событий для одного и того же ключа, но только один из них запускается за раз.
Есть ли общий (или специфический для 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 */ };
Но это очень запутанный способ программирования, поскольку конкретные действия смешиваются вместе в функции обработчика пробела, что затрудняет техническое обслуживание.
Каков наилучший способ обработки нескольких событий для одного ключа, чтобы эти события запускались только при определенных обстоятельствах?