2012-09-14 29 views
0

发现,开始一个新的意图可能不通知GAMEOVER的用户以正确的方式后,我现在runOnUiThread,Runnable接口和对话框struggeling ..显示对话框中的游戏用帆布时GAMEOVER

问题:如何我会在哪里实现一个Dialog.show()来通知用户游戏已经结束?我正在执行一个铁路赛车游戏。在这个时候,当火车相撞发生游戏时,我想在这里显示对话框。

我已经尝试过使用runOnUiThread,Runnable和Async线程。无法弄清楚。 我想在MainGamePanel的碰撞发生方法中显示对话框。

我有一个游戏。活动AndroidGameActivity:

private static final String TAG = AndroidGame.class.getSimpleName(); 
public static Vibrator v; 
private GameDatabaseOperations gameDatabaseOperations; 
private int currentDate; 
private int todayDate; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    try{ 
     currentDate = Calendar.getInstance().get(Calendar.DATE); 
     gameDatabaseOperations = new GameDatabaseOperations(this); 
     gameDatabaseOperations.createWriteModeDatabase(); 
     Cursor crDate = gameDatabaseOperations.fetchTodayDate(); 
     startManagingCursor(crDate); 
     if(crDate!= null && crDate.getCount() >0){ 
      crDate.moveToFirst(); 
      todayDate = crDate.getInt(0); 
     } 

     if(currentDate != todayDate){ 
      gameDatabaseOperations.updateTodayDefaultScore(0); 
      gameDatabaseOperations.updateTodayDate(currentDate); 
      Cursor cr1Date = gameDatabaseOperations.fetchTodayDate(); 
      startManagingCursor(cr1Date); 
      if(cr1Date!= null && cr1Date.getCount() >0){ 
       cr1Date.moveToFirst(); 
       todayDate = cr1Date.getInt(0); 
      } 
     } 
     gameDatabaseOperations.closeDatabase(); 

    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 

    FrameLayout fl = new FrameLayout(this); 
    setContentView(fl); 
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    LinearLayout pause = (LinearLayout) inflater.inflate(
    R.layout.pausebutton, null); 
    fl.addView(new MainGamePanel(this)); 
    fl.addView(pause); 
    v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

    } 

回答

0

你有没有想过实现你的游戏引擎是这样的:

while (!collision) 
{ 
    playGame(); 
    doAnimation(); 
    checkCollision(); 
} 

dialog.show(); 

performAction(determineNextGameState()); 

投入的玩笑()所有的游戏代码,然后修改碰撞场,当用户死亡?