此问题的示例是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函数更改边距)。

问题是您一次只能向一个方向移动。是否可以使我同时向下拉动向下箭头和向右箭头,而不是向右或向下移动到屏幕的左下部分?

我曾考虑过如果同时按下它们,可能会找到一种在它们之间交替的方法,但是我不确定这将如何工作。或者,如果有某种方法可以进行线程化。

另外,我不确定在您按住另一个按钮的同时是否有一种方法可以使它在按新按钮时也不会取消。

最佳答案

使用多个if语句将所有keydown和keyup组合为一个函数。首先检查组合,然后检查单箭头按下。那应该解决问题。

如果要支持用户能够流畅地移动球,我将研究此处给出的示例:http://jsfiddle.net/kzXek/。此示例包括处理向下箭头键以提供流体运动。

// Made by RobseRob.dk
// Please give credit.
// Vars which contains key state
var movLeft = 0;
var movRight = 0;
var movUp = 0;
var movDown = 0;

var score = 0;
$(function() {
    // Keydown listener
    $("body").keydown(function(e) {
        ek = e.keyCode;
        if (ek==37) movLeft=1;
        if (ek==39) movRight=1;
        if (ek==38) movUp=1;
        if (ek==40) movDown=1;
    });
    // Keyuo listener
    $("body").keyup(function(e) {
        ek = e.keyCode;
        if (ek==37) movLeft=0;
        if (ek==39) movRight=0;
        if (ek==38) movUp=0;
        if (ek==40) movDown=0;
    });
});

关于javascript - 多个Jquery操作同时运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20957823/

10-12 12:19
查看更多