2017-06-01 82 views
0

定时器运行我创造了这样的计时器在我的游戏:当比赛处于暂停状态,LibGdx

Timer.schedule(new Task() { 
     @Override 
     public void run() { 
      makeComets(); 
     } 
    }, 2); 

我使用这些代码超过2时,在整个游戏,它是工作的罚款。

但是每当我暂停游戏时,这个计时器都不会停止。计时器在暂停状态下运行,这会影响整个游戏。我发现Timer.instance()。stop()和Timer.instance()。stop()方法在那里。

我在ApplicationListener的暂停和恢复回调中进行了这些调用。

@Override 
public void pause() { 
    gameState = GameState.PAUSE; 
timerdelay = TimeUtils.nanosToMillis(TimeUtils.nanoTime()); 
    Timer.instance().stop(); 
} 

@Override 
public void resume() { 
    gameState = GameState.RESUME; 
    Timer.instance().delay(TimeUtils.nanosToMillis(TimeUtils.nanoTime()) - 
    timerDelay); 
    Timer.instance().start(); 
} 

但我的问题是不完全时,游戏状态PAUSE由solved.Still定时器运行manually.It工程与设备暂停和恢复。 我该如何解决这个问题?

回答

0

您的上述计划任务运行一次,延迟时间为2秒。

但是,当您运行重复性任务时,您不需要暂停并恢复您的任务,因为您的任务计划在TimerThread上,由LibGDX框架本身管理。

编辑

您需要自行停止Timer因为LibGDX为您启动。然后根据您的要求在一段时间后开始Timer

@Override 
public void resume() { 
    Timer.instance().stop(); 
    stage.addAction(Actions.sequence(Actions.delay(5), Actions.run(new Runnable() { 
     @Override 
     public void run() { 
      Timer.instance().start(); 
     } 
    }))); 
} 
+0

计时器启动时,如果我暂停了比赛,所有其他的事情会变得paused.but makeComet()方法会后不久,我恢复sometimes.It赛后不会等待2秒钟的延迟执行。当游戏处于暂停状态时,延迟时间已经过去了。有没有办法解决这个问题? – Niranjana

+0

@Niranjana请检查更新的答案 – Aryan

+0

@Manasa我看到你不接受我的答案。它有问题吗? – Aryan

相关问题