所以我有一個蛇的應用程序,我試圖讓它在新的運行前等待屏幕觸摸。PostDelayed功能越來越快
我想最好的方法是讓代碼停止更新蛇並繼續UI更新。所以我有一個正在運行的遊戲狀態和一個丟失的狀態。
當我玩第一款遊戲時,它會像它應該那樣,但是當我死去並且結束時它會變得越來越快。
我在想,這是我的方式調用PostDelay方法在運行和丟失。但是,如果我只是在跑步中稱呼它並讓其丟失,那麼在沒有任何停頓的情況下再次運行遊戲就可以順利運行。
private void startUpdateHandler(){
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (gameEngine.getCurrentGameState() == GameState.running){
gameEngine.Update();
handler.postDelayed(this, updateDelay);
}
if (gameEngine.getCurrentGameState() == GameState.lost){
if (trial) {
onGameLost();
trial = false;
}
if (touch){
gameEngine.initgame();
gameEngine.setToRunning();
trial = true;
}
handler.postDelayed(this, updateDelay);
}
snakeView.setSnakeViewMap(gameEngine.getMap());
snakeView.invalidate();
}
}, updateDelay);
}
我可能無法獲得postDelayed方法,我嘗試搜索暫停代碼並等待點擊的方法。但是這只是打破了我的代碼。如果我在死亡和重新開始之間沒有任何延遲,我就可以使用代碼。
新的到stackoverflow,所以如果我的問題是壞的我會嘗試修復它!
*****編輯******
這解決了我自己,我把handler.postDelayed(這一點,updateDelay);在運行功能的後面。我看到,當我有3000毫秒的延遲時間,每次我死的時候,它每跳一次就跳過一次額外的時間,當我有3個handler.postDelayed(this,updateDelay);每移動一次,它都會跳過2次。
所以我得出結論,如果我寫postdelay超過1次,它會隨着時間的推移而堆積起來。不知道爲什麼,但它現在完美的作品,我會很感激任何人可以解釋這一點!
哦......是的,這是有道理的大聲笑,總是忘記如果其他嘿。好吧,我會看着它!這是我使用Java的android的拳頭應用程序,所以我不熟悉正確獲取更新的方法 –