为什么和(&)if语句不起作用?

时间:2017-09-11 00:56:37

标签: javascript html5 canvas

所以我正在制作一个html5游戏,我在运动中工作。玩家可以在键中移动w,a,s,d。这样运作良好,但我想增加一个力量..就像玩家按+空格键或d +空格键一样,一个异能会触发。

我使用和操作员,它应该在我的理论中工作但它不起作用。 我是html5的新手,任何帮助将不胜感激。提前谢谢。

这是我的代码......只需在html note上复制粘贴。

<canvas id="canvas" width="800" height="500" style="border:1px solid #000000;"></canvas>

<script>
    var c = document.getElementById("canvas").getContext("2d");


    var WIDTH = 800;
    var HEIGHT = 500;


    var player = {
        x: Math.random() * WIDTH,
        y: Math.random() * HEIGHT,
        width: 30,
        height: 30,
        color: 'black',

        pressingDown: false,
        pressingUp: false,
        pressingLeft: false,
        pressingRight: false,


        pressinpowerRight: false,
        pressinpowerLeft: false,
    };



    drawEntity = function(e) {
        c.fillStyle = e.color;
        c.fillRect(e.x - e.width / 2, e.y - e.height / 2, e.width, e.height);
    }


    document.onkeydown = function(event) {
        if (event.keyCode === 68) //d
            player.pressingRight = true;
        else if (event.keyCode === 83) //s
            player.pressingDown = true;
        else if (event.keyCode === 65) //a
            player.pressingLeft = true;
        else if (event.keyCode === 87) // w
            player.pressingUp = true;


        else if (event.keyCode === 68 && event.keyCode === 32) // this statement is not working
            player.pressinpowerRight = true;
        else if (event.keyCode === 65 && event.keyCode === 32) // this statement is not working

            player.pressinpowerLeft = true;

    }

    document.onkeyup = function(event) {
        if (event.keyCode === 68) //d
            player.pressingRight = false;
        else if (event.keyCode === 83) //s
            player.pressingDown = false;
        else if (event.keyCode === 65) //a
            player.pressingLeft = false;
        else if (event.keyCode === 87) // w
            player.pressingUp = false;

        else if (event.keyCode === 68 && event.keyCode === 32) // not working
            player.pressinpowerRight = false;
        else if (event.keyCode === 65 && event.keyCode === 32) // not working
            player.pressinpowerLeft = false;
    }

    updatePlayerPosition = function() {
        if (player.pressingRight)
            player.x += 5;
        if (player.pressingLeft)
            player.x -= 5;
        if (player.pressingDown)
            player.y += 5;
        if (player.pressingUp)
            player.y -= 5;

        if (player.pressingpowerRight)
            player.x += 50;
        if (player.pressingpowerLeft)
            player.x -= 50;
    }

    update = function() {
        c.clearRect(0, 0, WIDTH, HEIGHT);

        updatePlayerPosition();
        drawEntity(player);

    }

    setInterval(update, 40);
</script>

1 个答案:

答案 0 :(得分:0)

尝试创建previousButtonKey全局变量并始终记录最后一个键,然后使用另一个键检查previousButtonKey以根据您的条件组合两个键。

实施例。按下第一个键是“Shift”,将其存储到变量中,然后一旦发生另一个键事件,请检查上一个和新键。如果它有效,则执行您想要的操作。