2014-12-21 4 views
1

Я новичок в Phaser.io, поэтому я извиняюсь, если этот пост не очень хорошо.Завершить игру после 5 секунд бездействия

Как закончить игру после 5 секунд бездействия? Я сделал что-то, но я думаю, что это действительно очень плохо для производительности. Каждый раз, когда вызывается функция обновления, я проверяю, не нажал ли пользователь «вверх», «влево», «вправо», «вниз» и после проверки, превысило ли мы время (currentTime - началоTime> 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(); 
    } 
} 

ответ

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(); 
    } 
} 
Смежные вопросы