游戏处于暂停状态时计时器运行 - LibGdx

时间:2017-06-01 04:38:46

标签: 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时运行计时器。它与设备暂停和恢复一起工作。 我该如何解决这个问题?

1 个答案:

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