Позвольте мне объяснить мою ситуацию ... Я делаю 2D платформерную игру, где вы можете ходить и снимать вещи. Для перемещения используются клавиши W, A и D, а съемка осуществляется с помощью мыши. Когда я выполняю все действия по отдельности, все работает, но когда я нажимаю кнопку мыши и одновременно нажимаю клавишу, мой код начинает работать так, как будто клавиша все еще нажата. Такое бывает только иногда.
Я регистрирую все события клавиатуры следующим образом:
<body onload="init()" onkeydown="press(event);" onkeyup="release(event);">
Вот скрипт, который обрабатывает это:
var KEY = {W: 87, A: 65, S:83, D: 68, E: 69};
var input = {
right: false,
up: false,
left: false,
down: false,
e: false
};
function press(evt) {
var code = evt.keyCode;
switch(code)
{
case KEY.W: input.up = true; break;
case KEY.A: input.left = true; break;
case KEY.S: input.down = true; break;
case KEY.D: input.right = true; break;
case KEY.E: input.e = true; break;
}
}
function release(evt)
{
var code = evt.keyCode;
input.code = code;
switch(code)
{
case KEY.W: input.up = false; break;
case KEY.A: input.left = false; break;
case KEY.S: input.down = false; break;
case KEY.D: input.right = false; break;
case KEY.E: input.e = false; break;
}
}
Даже когда я не регистрирую события мыши, такое случается. Может кто-нибудь объяснить, почему? И как мне это исправить?