2010-12-13 3 views
4

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

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

+0

Обсуждали ли вы использование библиотеки javascript для обеспечения привязки? Это поможет вам с динамической настройкой keyup/keydown, чтобы игра оставалась отзывчивой. – Mike

+0

Я не видел ни одной библиотеки, которая бы проверила, нажата ли клавиша или нет. В настоящее время я использую jQuery, но я не думаю, что у них есть такая функциональность. Если бы вы могли предложить библиотеку, которая сделает это, я был бы очень благодарен. –

ответ

6

Вы можете использовать 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 (.. in ..) через нажатый объект.

+0

Спасибо! Это было именно то, что я искал. –

Смежные вопросы