1

我正在做一个小游戏并遇到一些问题。

有菜单

public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch (arg0.getId()){
    case R.id.bStartGame:

        Intent a = new Intent(Menu.this, Action.class);
        startActivityForResult(a, 1);

        break; }

然后是启动surfaceview的活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(new GameView(this));
}

然后是带有游戏机制的surfaceView。

我的大部分代码都在这个视图中。

现在我有问题要为gameoverscreen找到一个好的解决方案。

如果我在surfaceview 内开始一个新活动,它会起作用-但我没有得到result(),它是会话期间获得的分数。

所以现在我想问你们如何解决这个问题。

想了一个办法,但是不知道怎么实现。它将高分从表面视图传递给活动并将其设置为结果(菜单活动返回)。并通过对话框启动一个 xml 文件,这将是游戏结束屏幕,一旦玩家触摸后退按钮,他就会回到菜单,在那里他可以看到他的得分。

你能告诉我如何编码吗?

亲切的问候丹尼斯

4

1 回答 1

0

有很多方法可以解决这个问题:

- 使用 startActivityForResult ,然后将其从新活动中发送回来,使用 onActivityResult 将其捕获在旧活动中(检查https://developer.android.com/reference/android/app/Activity.html

- 做我所做的(懒惰的,hacky方式:):使用startActivity()启动新活动并将高分添加为添加到意图的额外数据。在您的新活动中,使用 getIntent().getInt(随便什么)来获取发送的分数数据并按照您的意愿进行处理。然后关闭该活动,您将返回到前一个持有您的表面视图的活动。

现在的诀窍:在开始新活动并将其分数添加到意图之前,只需在 Surfaceview 的活动中运行与在新活动中相同的分数计算!这样,当您返回到 SurfaceView 的活动时,您仍然会获得正确的新分数(如果存储/恢复正确;不要忘记将其添加到您的保存/恢复状态和/或 SurfaceView 的私有变量中) !

唯一的缺点是您必须在两个位置更新您的评分机制。这不是好的编程。但它有效而且很容易。

于 2012-04-25T23:08:28.323 回答