Определение, нажата ли клавиша в Javascript - PullRequest
1 голос
/ 26 октября 2011

Я пишу платформенную игру для своего университетского проекта, используя элемент canvas и Javascript.Я уже в пути, но застрял в том, как посмотреть, нажимается ли определенная клавиша в цикле обновления моих игроков.

Я думал так:

if(d) {
    // move player right
} else if(a) {
    // move player left
} else if(w) {
    // move player up
} else if(s) {
    // move player down
}

Это псевдокод, очевидно.Единственные ресурсы для нажатия клавиш в Javascript, которые я могу найти, - это события. Ничего не видно, нажимается ли клавиша в определенный момент.

Может кто-нибудь пролить свет на это?

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

Установка 4 логических переменных, если клавиша вверх или вниз. Для keydown установите значение true, для keyup установите значение false. Чем вы можете воспользоваться, если (key_d == true) {// нажата клавиша d}

Это лучший способ сделать это. Это не «хакерство», добавьте обработчики событий для обработки нажатий клавиш.

1 голос
/ 26 октября 2011

Не думаю, что вы можете обойтись, используя keydown, keyup или keypress для определения, какие клавиши нажаты. Однако вместо того, чтобы запускать этот код в одном из этих обработчиков событий, вы можете установить и снять некоторый глобальный флаг внутри них. Затем, когда этот код запускается (я предполагаю, что он будет на каком-то интервале?), Он может проверить флаг.

0 голосов
/ 26 октября 2011

Вам нужен прослушиватель событий.

//function foo, returns keypress
function foo(e){
var evt=(e)?e:(window.event)?window.event:null;
if(evt){
    var key=(evt.charCode)?evt.charCode:
        ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
    return key;
}

//set event listener
//you could also attach this to your canvas, but that will require tricks
//to make the canvas focusable
document.addEventListener('keydown', foo);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...