2013-01-23 110 views
0

即时通讯在Android上制作游戏。我需要暂停游戏,显示暂停菜单(无论如何通过新的活动或对话),然后恢复游戏。这就是我如何暂停和恢复我的线程:Android:暂停线程/游戏,显示菜单,恢复游戏/线程?

public void pause() { 
      isRunning = false; 
      while (true) { 
       try { 
        ourThread.join(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       break; 
      } 
      ourThread = null; 
     } 

public void resume() { 
      isRunning = true; 
      ourThread = new Thread(this); 
      ourThread.start(); 
     } 

这工作完全正常,当我去到主屏幕和一切,但即时通讯上如何显示的菜单和操作它混淆。

回答

1

你有没有考虑过使用弹出菜单?你可以在暂停()上做一些你showPopup()。然后,您可以点击屏幕上的任意位置关闭弹出窗口,或者您可以在onMenuItemClick中设置简历

这是否合理?

public void showPopup() { 
    // Anchor popoup with layout to "center" menu 
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.menuLayout); 
    PopupMenu popup = new PopupMenu(this, layout); 
    popup.setOnMenuItemClickListener(this); 
    popup.getMenuInflater().inflate(R.layout.menu, popup.getMenu()); 
    popup.show(); 
} 

@Override 
public void onMenuItemClick(MenuItem item) { 
    dosomething(); 
      resume(); 

} 
+0

哦,这是一个不错的主意生病尝试。谢谢! –

+0

当前活动保持暂停状态时,您能否帮助我开始新活动,并在新活动完成时恢复当前活动?这就是我所说的大多数游戏中使用的暂停菜单。对不起,误解 –

+1

要清楚,可以使用弹出菜单,而当前活动为活动作为背景。然后,一旦用户点击一个选项,默认情况下,弹出窗口将被解除,然后您可以同时恢复活动。否则,当你从旧的活动中调用一个新的活动时,我相信当你按下“返回”按钮时,它将返回到旧的活动并调用onResume()。看到这里的活动生命周期的更多信息:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Amy

0

单击设备上的菜单按钮时调用暂停()。

+0

是的显然,但如何让一个暂停菜单出现,并在游戏中操作在后台暂停? –

+0

当你点击Android的菜单按钮(Android设备有硬件菜单按钮,通常@左下角) – pvn

+0

不,不,我很抱歉你误会了。我的意思是创建一个像pause()方法被调用时那样在游戏中使用的自定义暂停菜单,然后实现它。或者您可以将其视为调用新活动,同时保持当前活动在后台暂停 –