同时回复2个Keypresses

时间:2016-02-04 07:01:26

标签: javascript jquery keypress onkeydown

当用户按下箭头键时,我正在练习移动物体。我得到了它,所以当他们按下它时,它会向右移动一个物体,当它们向上按压时,它会向上移动。但是,我的功能只能同时记录其中一个按键,所以它们不能对角移动:

document.onkeydown = function(e){
        if (e.which == 39){    // Move Right
            var position = $("#ball1").position();
            $("#ball1").offset({left:position.left+2});
        }
        if (e.which == 38){    // Move Up
            var position = $("#ball1").position();
            $("#ball1").offset({top:position.top-2});
        }
};

有没有办法同时响应两个按键?

1 个答案:

答案 0 :(得分:0)

你必须同时检测keydown和keyup

var key = {};
document.onkeydown = function(e){
    if (e.which == 39 || e.which == 38){    // Move Right
        key[e.which] = true;
        if (key[39]) {
            var position = $("#ball1").position();
            $("#ball1").offset({left:position.left+2});
        }
        if (key[38]) {
            var position = $("#ball1").position();
            $("#ball1").offset({top:position.top-2});
        }
    }
};
document.onkeyup = function(e){
    if (key[e.which])
        delete key[e.which];
};