2017-06-01 59 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

相關問題