Keylistener в Javascript
Я ищу KeyListener
для игры, которую я разрабатываю на JavaScript. Я понятия не имею, как это будет работать в реальном коде, но это будет примерно так:
if(keyPress == upKey)
{
playerSpriteX += 10;
}
else if(keyPress == downKey)
{
playerSpriteY -= 10;
}
так далее...
Я искал его, и Google придумал вещи, связанные с AJAX, которые я пока не понимаю. Есть ли встроенная функция в JavaScript, которая делает это?
Ответы
Ответ 1
Вот обновление для современных браузеров в 2019 году
let playerSpriteX = 0;
document.addEventListener('keyup', (e) => {
if (e.code === "ArrowUp") playerSpriteX += 10
else if (e.code === "ArrowDown") playerSpriteX -= 10
document.getElementById('test').innerHTML = 'playerSpriteX = ' + playerSpriteX;
});
Click on this window to focus it, and hit keys up and down
<br><br><br>
<div id="test">playerSpriteX = 0</div>
Ответ 2
Код
document.addEventListener('keydown', function(event){
alert(event.keyCode);
} );
Это возвращает код ascii ключа. Если вам нужно представление ключа, используйте event.key (это вернет 'a', 'o', 'Alt'...)
Ответ 3
JSFIDDLE DEMO
Если вы не хотите, чтобы событие было непрерывным (если вы хотите, чтобы пользователь каждый раз отпускал ключ), измените onkeydown
на onkeyup
window.onkeydown = function (e) {
var code = e.keyCode ? e.keyCode : e.which;
if (code === 38) { //up key
alert('up');
} else if (code === 40) { //down key
alert('down');
}
};
Ответ 4
Вы проверили небольшую библиотеку Mousetrap?
Mousetrap - простая библиотека для обработки быстрых клавиш в JavaScript.
Ответ 5
Чуть более удобочитаемое сравнение выполняется путем event.key
в верхний регистр (я использовал onkeyup - нужно, чтобы событие запускалось один раз при каждом нажатии клавиши):
window.onkeyup = function(event) {
let key = event.key.toUpperCase();
if ( key == 'W' ) {
// 'W' key is pressed
} else if ( key == 'D' ) {
// 'D' key is pressed
}
}
Каждый ключ имеет свой собственный код, выведите его путем вывода значения переменной "ключ" (например, для клавиши со стрелкой вверх это будет "ARROWUP" - (приведено к верхнему регистру))