2016-12-30 13 views
1

Я хочу создать контроллер игрока для моей первой игры в jquery, но что-то не так. Не могли бы вы мне помочь?keydown событие не работает

$('canvas').keydown(function(e) { 
    alert('in function'); 
    if (e.keyCode == 37) {//37 - strzalka w lewo 
     moveleft(); 
    } 
    if (e.keyCode == 39) {//39 - strzalka w prawo 
     moveright(); 
    } 
    if (e.keyCode == 40) {//40 - strzalka w dol 
     movedown(); 
    } 
    if (e.keyCode == 38) {//38 - strzalka w gore 
     moveup(); 
    } 
    if (e.keyCode == 32) {//32 - spacja 

    } 
}); 

function moveup() { 
    gracz.speedY -= 1; 
} 

function movedown() { 
    gracz.speedY += 1; 
} 

function moveleft() { 
    gracz.speedX -= 1; 
} 

function moveright() { 
    gracz.speedX += 1; 
} 

, когда я нажимаю стрелку, обработчик события не работает

+1

Получение ключевых событий, связанных на 'canvas' ненадежно А.Т. ул. Вместо этого используйте родительский элемент 'canvas' или даже' window', например: https://jsfiddle.net/ayb9edLm/ –

+0

. Пожалуйста, взгляните на этот вопрос: http://stackoverflow.com/questions/7613433/attach-keyboard-events-to-html5-canvas –

+0

спасибо за работу :) –

ответ

1

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

$(window).keydown(function(e) { 
    // your code here... 
}); 

Working example

Также обратите внимание, что вы можете упростить код, поставив функции, которые будут работать под событием вызова в пределах объект, введенные их значениями KEYCODE, как это:

var gracz = { 
    speedY: 0, 
    speedX: 0, 
    keydown: { 
     '37': function() { gracz.speedX -= 1; }, // left 
     '38': function() { gracz.speedY -= 1; }, // up 
     '39': function() { gracz.speedX += 1; }, // right 
     '40': function() { gracz.speedY += 1; }, // down 
     '32': function() { console.log('SPACE'); } // space 
    } 
}; 

$(window).keydown(function(e) { 
    gracz.keydown[e.which](); 
    console.log(gracz); 
}); 

Working example

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