我的W,A,S,D运动中的扭结 - Javascript新手

时间:2016-01-11 22:25:45

标签: javascript keyboard-events

window.addEventListener("keydown", keyDown, false);
window.addEventListener("keyup", keyUp, false);

var key = new Set();
function keyDown(k) {
    key.add(k.keyCode);
    if (key.has(83)) {
        player.vy = 1;  
    };
    if (key.has(87)) {
        player.vy = -1;  
    };
    if (key.has(65)) {
        player.vx = -1;
        if (key.has(68)) {
           player.vx = -1; 
        };
    };
    if (key.has(68)) {
        player.vx = 1;
        if (key.has(65)) {
           player.vx = 1; 
        };
    };
};

    function keyUp(k) {
        key.delete(k.keyCode);
        if (k.keyCode === 83) {
            player.vy = 0;  
        };
        if (k.keyCode === 87) {
            player.vy = 0;  
        };
        if (k.keyCode === 65) {
            if (!key.has(68)) {
                player.vx = 0;
            };
        };
        if (k.keyCode === 68) {
            if (!key.has(65)) {
                player.vx = 0;
            };
        };
    };

我正在尝试在拨打W,A,S,D键时创建平滑的动作。我终于得到了一些有效的东西,除了一个小故障。每当我按住D向右移动并按A时,玩家的动作不会中断。这就是我希望它工作的方式,但是当我做相反的事情时,运动被中断并逆转。如果我切换我在代码中指出的2个块,它将反转问题,修复一个并打破另一个。我认为它与如何捕捉if语句有关,但我不知道。有人能告诉我ffffffff发生了什么吗?

0 个答案:

没有答案