在5秒不活动后结束游戏

时间:2014-12-21 16:02:44

标签: javascript phaser-framework

我是Phaser.io的新手,所以如果这篇文章不是很好,我会道歉。

如何在5秒钟不活动后结束游戏?我已经做了一些事情,但我认为这对于表现来说真的很糟糕。 每次调用更新功能时,我都会检查用户是否没有按下“向上”,“向左”,“向右”,“向下”和“#34;然后我检查我们是否超过了时间(currentTime - beginningTime> 5000)。 这段代码有2个问题,我试图解雇: - 性能非常差,因为每次调用更新功能时都没有必要检查 - 在我的情况下,我想检查一下"没有钥匙被按下"而现在我只是检查用户是否没有按下" up"," left"," right"或" down"

怎么做? 对不起我的英文

var timeBeginning = new Date().getTime();

function update() {
    // input to move the ship
    if (cursors.up.isDown) {
        game.physics.arcade.accelerationFromRotation(ship.rotation, 200, ship.body.acceleration);
    } else {
        // stopper the acceleration 
        ship.body.acceleration.set(0);
    }

    if (cursors.left.isDown) {
        ship.body.angularVelocity = -300;
    } else if (cursors.right.isDown) {
        ship.body.angularVelocity = 300;
    } else {
        // stop the rotation
        ship.body.angularVelocity = 0;
    }

    if (!cursors.up.isDown && !cursors.left.isDown && !cursors.right.isDown && !cursors.down.isDown) {
        if (new Date().getTime() - timeBeginning > 5000) {
            end();
        }
    } else {
        timeBeginning = new Date().getTime();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过 game.input.keyboard.addCallbacks

添加全局键盘事件侦听器
var timeBeginning = Date.now();

function create(){
    function updateTime(){
        timeBeginning = Date.now();
    }
    game.input.keyboard.addCallbacks(game, updateTime, updateTime);
}

function update() {
    //your code

    if (Date.now() - timeBeginning > 5000) {
        end();
    }
}