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

时间:2011-11-23 19:24:09

标签: android opengl-es

我现在有一个MainMenu活动,其中包含一个XML文件的布局。通过按下按钮,Intent将用户带到游戏活动,具有GLSurfaceView。

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

我尝试对我的Activity类进行静态调用,然后调用:

moveTaskToBack(true);
startActivity(intentToMainMenu);

我根本不知道如何回到主菜单。另外我相信我应该破坏游戏的活动,因为如果我切换活动,OpenGL上下文将会丢失。那我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

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

Intent i = new Intent(getApplicationContext(), YourActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

重新排序到前置标志可确保您没有同一活动的多个实例,因为如果已存在新活动,则不会启动新活动。因此,当玩家用完生命时,您可以像上面的示例一样简单地启动MainMenu。

PS:你无法静态完成活动。

根据您的评论,这是一个更新:

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

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

答案 1 :(得分:0)

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