按键事件不起作用
keydown event doesn't work
我想在 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;
}
当我按下箭头时,事件处理程序不起作用
在 canvas 上检索与密钥相关的事件充其量是不可靠的。使用 canvas 的父元素,甚至 window,例如:
$(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);
});
我想在 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;
}
当我按下箭头时,事件处理程序不起作用
在 canvas 上检索与密钥相关的事件充其量是不可靠的。使用 canvas 的父元素,甚至 window,例如:
$(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);
});