【发布时间】:2014-01-24 07:41:45
【问题描述】:
这个问题的例子是http://jsfiddle.net/4ac5u/
var x = 0;
var y = 0;
$(document).keydown(function(e){
if (e.keyCode == 37) {
$("#left").css( "background-color", "red" );
x = x-1;
$("#ball").css( "margin-left", x*10 );
return false;
}
});
$(document).keyup(function(e){
if (e.keyCode == 37) {
$("#left").css( "background-color", "#fff" );
return false;
}
});
$(document).keydown(function(e){
if (e.keyCode == 38) {
$("#up").css( "background-color", "red" );
y = y-1;
$("#ball").css( "margin-top", y*10 );
return false;
}
});
$(document).keyup(function(e){
if (e.keyCode == 38) {
$("#up").css( "background-color", "#fff" );
return false;
}
});
$(document).keydown(function(e){
if (e.keyCode == 39) {
$("#right").css( "background-color", "red" );
x = x+1;
$("#ball").css( "margin-left", x*10 );
return false;
}
});
$(document).keyup(function(e){
if (e.keyCode == 39) {
$("#right").css( "background-color", "#fff" );
return false;
}
});
$(document).keydown(function(e){
if (e.keyCode == 40) {
$("#down").css( "background-color", "red" );
y = y+1;
$("#ball").css( "margin-top", y*10 );
return false;
}
});
$(document).keyup(function(e){
if (e.keyCode == 40) {
$("#down").css( "background-color", "#fff" );
return false;
}
});
在此示例中,我有不同的 Jquery keydown 侦听器等待特定的按键,并且在该按键上我想将球沿某个方向移动(在此示例中使用 css 函数来更改边距)。
问题是您一次只能朝一个方向移动。是否有可能让如果我同时有向下箭头和向右箭头,我会向屏幕的左下角移动,而不仅仅是向右或向下?
我曾考虑过如果两者都被按下,可能会找到一种在它们之间交替的方法,但我不确定这会如何工作。或者如果有一些方法可以做线程。
此外,我不确定是否有一种方法可以使它在按下新按钮时也不会取消,而您仍然按住另一个按钮。
【问题讨论】:
-
为什么不让
e.keyCode在同一个事件处理函数的else-if 中检查呢? Example in a JSFiddle here -
你为什么要大量基于使用 jquery 的用户交互来编写任何东西?移动球的目的是什么?写游戏?用别的东西。
-
你有什么建议@tenub?
-
这里有:stackoverflow.com/questions/10655202/… Cheers
-
我在想可能是一个简单的游戏,但更多的是一般的键盘控制
标签: javascript jquery javascript-framework