Javascript Проверка состояния клавиатуры - PullRequest
5 голосов
/ 13 декабря 2010

Я работаю над созданием простой игры на javascript и должен иметь возможность проверить, нажимаются ли определенные клавиши. Я попытался привязаться к событию onkeydown, но проблема, с которой я столкнулся, имеет две стороны: во-первых, он не позволяет мне проверить, нажата ли более чем одна клавиша в любой момент. А во-вторых, он приостанавливается после удержания клавиши, прежде чем он начинает рассылать спам.

В моем коде у меня может быть либо событие, либо функция, которая проверяет каждую миллисекунду, чтобы увидеть, нажата ли клавиша. Видя, что это игра, у меня действительно не было бы проблем с этим. Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 13 декабря 2010

Вы можете использовать onkeydown и onkeyup вместе:

var pressed={};
element.onkeydown=function(e){
     e = e || window.event;
     pressed[e.keyCode] = true;
}

element.onkeyup=function(e){
     e = e || window.event;
     delete pressed[e.keyCode];
}

с этим кодом вы сохраняете каждый код нажатой клавиши в переменной pressed, а затем удаляете его при отпускании клавиши. Поэтому, когда вам нужно узнать, какие клавиши нажаты, вы можете зацикливаться с (for) в нажатом объекте.

0 голосов
/ 13 декабря 2010

Я недавно написал сообщение в блоге, посвященное этой теме. См http://nixtu.blogspot.com/2010/12/less-spartan-approach-to-javascript-key.html.

...