С добавлением к ответу Ибнелаика, вот способ убедиться, что игроки могут двигаться лучше -
var key = [];
function keys(db, e) {
var code = e.which || e.keyCode;
if (db == false && key.includes(code) === false) {
key.push(code);
} else if (db === true) {
key.splice(key.indexOf(code));
}
}
setInterval(() => {
console.log(key);
}, 30);
document.getElementsByClassName('game')[0].getContext('2d').fillText('Click here and press keys', 10, 10);
.game {
background-color: #f1f1f1;
outline: none;
border: 1px solid black;
}
<canvas class='game' tabindex='1' width='400px' height='290px' onkeydown='keys(false, event)' onkeyup='keys(true, event)'>
Что это делает:
<canvas>
(не ограничиваясь <canvas>
, хотя) ждет keydown
и добавляетevent.keycode
или event.which
в массив. Он также ожидает keyup
и удаляет все, что event.keycode
или event.which
было освобождено из массива.
setInterval
просто для записи массива в консоль. Последняя строка в коде предназначена для записи текста в <canvas>
.
Конечно, вы можете добавить его оператор switch
в setInterval
, но только там.