首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回openGL-ES游戏的主菜单-关闭/隐藏当前活动

返回openGL-ES游戏的主菜单-关闭/隐藏当前活动
EN

Stack Overflow用户
提问于 2011-11-24 03:24:09
回答 2查看 871关注 0票数 0

我现在有了一个MainMenu活动,它的布局有一个XML文件。通过按下按钮,意图将用户带到具有GLSurfaceView的游戏活动。

我使用我的' game‘类来管理所有的游戏对象,生命和重置等。当lives达到0时,我想调用onGameOver(),它应该会返回到MainMenu活动。我该如何做到这一点?

我尝试对我的Activity类进行静态调用,以实现以下任一调用:

代码语言:javascript
复制
moveTaskToBack(true);
startActivity(intentToMainMenu);

我不知道怎样才能回到主菜单。我还认为我应该销毁游戏的活动,因为如果我切换活动,OpenGL上下文将会丢失。那么我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-24 04:20:03

你可以像Frank发布的那样做,但在你的特定情况下,你可能不想完成游戏活动(玩家可能会再次玩游戏)。不会丢失任何上下文。如果你完成了你的游戏活动,每次开始一个新的游戏将会很慢。正因为如此,最好开始这样的活动:

代码语言:javascript
复制
Intent i = new Intent(getApplicationContext(), YourActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

reorder to front标志确保您不会有同一个活动的多个实例,因为如果已经存在一个新的活动,它不会启动新的活动。因此,当播放器的生命耗尽时,您只需像上面的示例一样启动MainMenu。

附言:你不能静态地结束活动。

根据你的评论,这里有一个更新:

虽然可能有更好的解决方案,但这里有一个我使用的解决方案:既然你正在创建一个游戏,你可能有一个单独的线程来绘制东西并检查游戏是否已经结束。为活动中UI线程中存在的呈现线程注册一个处理程序。然后,当游戏应该结束时,您将能够向Activity类中的Handler发布一条消息。在接收端,您只需执行我的答案中发布的代码,因为您不会在静态方法中。

如果您不熟悉处理程序:http://saigeethamn.blogspot.com/2010/04/threads-and-handlers-android-developer.html

票数 1
EN

Stack Overflow用户

发布于 2011-11-24 03:46:27

您可以在游戏活动中调用finish()。这将把你带回你的家庭活动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8247916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档