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