我在游戏中创建了这样的计时器:
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时运行计时器。它与设备暂停和恢复一起工作。 我该如何解决这个问题?
答案 0 :(得分:0)
您的上述计划任务运行一次,延迟时间为2秒。
但是当您运行重复性任务时,您不需要暂停和恢复任务,因为您的任务是在由LibGDX框架本身管理的TimerThread
上安排的。
修改强>
你需要自己停止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();
}
})));
}