Jquery 按键关闭事件不存在';行不通

Jquery 按键关闭事件不存在';行不通,jquery,events,controller,handler,Jquery,Events,Controller,Handler,我想为我在jquery的第一场比赛做一个玩家控制器,但有点不对劲。你能帮帮我吗 $('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();

我想为我在jquery的第一场比赛做一个玩家控制器,但有点不对劲。你能帮帮我吗

$('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;
}

当我按箭头键时,事件处理程序不工作

在画布上检索与键相关的事件充其量是不可靠的。使用画布的父元素,甚至窗口,例如:

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

还请注意,您可以通过将要在对象中的按键事件下运行的函数(由其按键代码值设置按键)来简化代码,如下所示:

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);
});

画布上检索关键相关事件充其量也不可靠。使用
画布
的父元素,甚至是
窗口
,例如:请看一看这个问题:这应该对您的项目有帮助。