Я создаю игру на холсте для удовольствия, и я пытаюсь перефразировать некоторые из моих команд else else, если вместо этого используются таблицы поиска объектов.Javascript Lookup table vs else if и несколько совпадающих результатов
Это мой текущий код для присвоения значения переменной на KeyDown:
function keyDown(e) {
keypressed = true;
if (e.keyCode == 39 || e.keyCode == 68) {rightKey = true; }
else if (e.keyCode == 37 || e.keyCode == 65) {leftKey = true;}
else if (e.keyCode == 38 || e.keyCode == 87) {upKey = true; }
else if (e.keyCode == 40 || e.keyCode == 83) {downKey = true; }
else if (e.keyCode == 80) { isPaused = !isPaused; document.body.classList.toggle('pause'); }
if (e.keyCode === 69) { startHit(); }
}
Я хочу назначить обе клавиши WSAD и клавиши со стрелками, чтобы сделать то же самое, при этом использование || в условиях if.
Я читал, что с помощью литерала объекта таблицы поиска является быстрым способом для достижения этой цели, и это моя попытка:
var codes = {
39 : function() {
return rightKey = true;
},
37 : function() {
return leftKey = true;
},
38 : function() {
return upKey = true;
},
40 : function() {
return downKey = true;
},
80 : function() {
isPaued = !isPaused;
document.body.classList.toggle('pause');
},
69 : startHit
}
codes[68] = codes[39];
codes[65] = codes[37];
codes[87] = codes[38];
codes[83] = codes[40];
function keyDown(e) {
keypressed = true;
codes[e.keyCode]();
}
Это прекрасно работает, но я не уверен, что назначение нижних клавиш это лучший способ сделать это? Я не могу явно использовать || оператор в назначении левой руки, так будет ли более чистый способ сделать это или я должен просто придерживаться else ifs?
Кроме того, я знаю, что могу использовать оператор switch, но я чувствую, что он будет похож на то, как я делал выше.
Любые советы были бы замечательными. Благодарю.
Это похоже на приятное решение. Я не знал, что у меня могут быть оба случая вместе для каждого состояния! (хотя синтаксис оператора switch выглядит странно: D) –