2015-01-09 127 views
0

我的遊戲有問題 - 當遊戲爲0時,它應該顯示遊戲結束屏幕並完成遊戲活動,但屏幕會凍結。 在表面的代碼爲:Android爲什麼沒有完成活動

if(live <= 0){ 
     try { 
      gameThread.setGameRunning(false); 
      gameThread.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     gameOverHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       gameOver.onGameOver(score); 
      } 
     }); 

    } 

而且在GameActivity接口:

@Override 
public void onGameOver(int score) { 
    Intent gameOver = new Intent(this, GameOver.class); 
    gameOver.putExtra("score", score); 
    startActivity(gameOver); 
    gameEngine.stop(); 
    this.finish(); 
} 

遊戲線程循環畫布繪製和發動機的角色的動作。

我希望你能幫助我。 謝謝!

+0

一種可能性是gameOverHandler不是在UI線程上創建的,而是在後臺線程上創建的。在這種情況下,帖子不會執行到UI線程,完成可能沒有適當的效果。嘗試使用新的Handler(Looper.getMainLooper())在UI線程上創建gameOverHandler並嘗試它是否有效。 –

+0

我明白你的意思,它是正確的,因爲在表面gameOver從來沒有分配,但我必須做到這一點,我不明白你的意思 - > Looper.getMainlooper()你可以描述它嗎? – shizzle31

回答

0

您必須使用

gameOverHandler = new Handler(); 

gameOverHandler = new GameOverHandler(); 

嘗試用

gameOverHandler = new Handler(Looper.getMainLooper()); 

gameOverHandler = new GameOverHandler(Looper.getMainLooper()); 
取代它的​​代碼某處初始化gameOverHandler

取決於您實際使用的類別。

+0

謝謝,但它沒有工作...我發現了一個解決方案,我沒有聲明界面是在用戶界面中。 – shizzle31

+0

不錯!如果您可以發佈正確的解決方案並對其進行標記。未來的用戶將會得到很多幫助。 –

0

Sry基因我上網是上下左右的週末,我受夠了這種構造

public GameSurface(Context context, OnGameOver onGameOver){ 
... 
} 

,並在MainActivity解決它

gameSurface = new GameSurface(this, this); 

和實施OnGameOver 豆蔻位重寫我的代碼,但它的作品...