Отговорете на 2 натискания на клавиши едновременно

Практикувам да се движа около обекти, когато потребител натисне клавиш със стрелка. Имам го така, че когато натиснат надясно, той премества обект надясно, а когато натиснат нагоре, го премества нагоре. Моята функция обаче може да запише само 1 от тези натискания на клавиши наведнъж, така че те не могат да се движат диагонално:

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

Има ли начин да реагирате на двете натискания на клавиши едновременно?


person MarksCode    schedule 04.02.2016    source източник
comment
Проверете това[LINK] stackoverflow.com/questions/4954403/   -  person shu    schedule 04.02.2016


Отговори (1)


Трябва да откриете както натискане на клавиш, така и нагоре

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];
};
person mylee    schedule 04.02.2016