游戏结束时使用画布在游戏中显示对话框

Posted

技术标签:

【中文标题】游戏结束时使用画布在游戏中显示对话框【英文标题】:Show Dialog in Game with canvas when gameover 【发布时间】:2012-09-14 09:57:49 【问题描述】:

在发现开始一个新的意图可能不是通知用户 GameOver 的正确方式后,我现在正在努力解决 runOnUiThread、Runnable 和对话框。

问题:我将如何以及在哪里实现 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);

     

【问题讨论】:

【参考方案1】:

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

while (!collision) 

     playGame();
     doAnimation();
     checkCollision();


dialog.show();

performAction(determineNextGameState());

将所有的游戏代码放在playGame()中,然后在用户死亡时修改碰撞场?

【讨论】:

以上是关于游戏结束时使用画布在游戏中显示对话框的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏服务的邀请对话框未显示任何朋友

如何避免 Google Play 游戏服务登录对话框自动提示?

如何在正在运行的线程中显示警报对话框?

《Python多人游戏项目实战》第三节 在窗口上显示玩家ID以及对话内容

《Python多人游戏项目实战》第三节 在窗口上显示玩家ID以及对话内容

游戏中心登录对话框没有出现