Завершить игру через 5 секунд бездействия

Я новичок в Phaser.io, поэтому приношу извинения, если этот пост не очень хорош.

Как завершить игру через 5 секунд бездействия? Я сделал что-то, но я думаю, что это действительно очень плохо для производительности. Каждый раз, когда вызывается функция обновления, я проверяю, не нажал ли пользователь «вверх, влево, вправо, вниз», и после этого я проверяю, не превысили ли мы время, выполнив (currentTime - beginTime > 5000). Этот код имеет 2 проблемы, которые я пытаюсь запустить: - Производительность действительно плохая, потому что нет необходимости проверять каждый раз, когда мы вызываем функцию обновления. - В моем состоянии я хочу проверить, что «клавиша не была нажата» и для теперь я просто проверяю, не нажал ли пользователь "вверх", "влево", "вправо" или "вниз"

Как это сделать ? Извините за мой английский

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

person Clemzd    schedule 21.12.2014    source источник


Ответы (1)


Вы можете добавить глобальный прослушиватель событий клавиатуры с помощью 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();
    }
}
person cuixiping    schedule 13.04.2015