在我释放了两个按箭头键之一后,为什么我的球会停止?

时间:2016-07-18 21:01:38

标签: javascript javascript-events key 2d arrows

我尝试用HTML5 / Javascript制作游戏,其中两个玩家开球以获得一个更大的球。 我的节目听" keydown"和#34; keyup"事件,然后将按钮的状态写入" keyMaps"数组,并使用此数组来决定移动球的位置。

驾驶球员球有困难。 我同时按下键盘上的两个箭头按钮(例如"左"和"上")以驱动对角线方向。在此之后,当我释放最后一次按下时(对于PC心灵),我的球停了下来。但是当我第一次按下(给PC心灵)按钮时,我的球没有停止。 此外,我在浏览器中查看了控制台日志,发现当我按下两个按钮时(例如"左箭头"和"向上箭头")只有两个中的一个事件继续传递给movePlayer()函数。同样的问题在这里:character stops after second key pressed is lifted,但没有解决。

为什么只有两个事件中的一个继续在movePlayer()函数中传递以及如何解决这个问题?

以下是我的程序代码:

    function movePlayer(e) {
    console.log(e.keyCode);
    keyMaps[e.keyCode] = e.type == 'keydown';

        if ((keyMaps[37]==true) && (keyMaps[40]==true)) {
            xP1 -= velocity; yP1 += velocity;
        }

        if ((keyMaps[37]==true) && (keyMaps[38]==true)) {
            xP1 -= velocity; yP1 -= velocity;
        }

        if ((keyMaps[39]==true) && (keyMaps[40]==true)) {
            xP1 += velocity; yP1 += velocity;
        }

        if ((keyMaps[39]==true) && (keyMaps[38]==true)) {
            xP1 += velocity; yP1 -= velocity;
        }

        if ((keyMaps[65]==true) && (keyMaps[83]==true)) {
            xP2 -= velocity; yP2 += velocity;
        }

        if ((keyMaps[65]==true) && (keyMaps[87]==true)) {
            xP2 -= velocity; yP2 -= velocity;
        }

        if ((keyMaps[68]==true) && (keyMaps[83]==true)) {
            xP2 += velocity; yP2 += velocity;
        }

        if ((keyMaps[68]==true) && (keyMaps[87]==true)) {
            xP2 += velocity; yP2 -= velocity;
        }

        if (keyMaps[37] && !keyMaps[40] && !keyMaps[38] && !keyMaps[39]) {
            xP1 -= velocity;
        }

        if (!keyMaps[37] && keyMaps[40] && !keyMaps[38] && !keyMaps[39]) {
            yP1 += velocity;
        }

        if (!keyMaps[37] && !keyMaps[40] && keyMaps[38] && !keyMaps[39]) {
            yP1 -= velocity;
        }

        if (!keyMaps[37] && !keyMaps[40] && !keyMaps[38] && keyMaps[39]) {
            xP1 += velocity;
        }

        if (keyMaps[65] && !keyMaps[83] && !keyMaps[87] && !keyMaps[68]) {
            xP2 -= velocity;
        }

        if (!keyMaps[65] && keyMaps[83] && !keyMaps[87] && !keyMaps[68]) {
            yP2 += velocity;
        }

        if (!keyMaps[65] && !keyMaps[83] && keyMaps[87] && !keyMaps[68]) {
            yP2 -= velocity;
        }

        if (!keyMaps[65] && !keyMaps[83] && !keyMaps[87] && keyMaps[68]) {
            xP2 += velocity;
        }
    }   
    document.onkeydown = document.onkeyup = movePlayer;

感谢您的关注!

0 个答案:

没有答案