【问题标题】:Manage the back button with multiple scene管理具有多个场景的后退按钮
【发布时间】:2011-10-11 18:17:06
【问题描述】:

我按照本教程http://www.andengine.org/forums/tutorials/multiple-screen-andengine-game-v2-t4755.html 创建了一个具有多个场景和一个活动的简单应用程序。 我想知道当我在第一个场景中使用后退按钮并完成活动时如何返回上一个场景。

我在 MultiScreen 类中尝试过:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        this.mEngine.getScene().back();
    }
    return super.onKeyDown(keyCode, event);
}

将 SceneManager 中的 core.getEngine().setScene(scene); 替换为 this.mEngine.getScene().setChildScene(scene);


场景的工作方式与我的理解不同,我解决了:

    @Override
    public void onBackPressed()
    {
        Scene scene = this.mEngine.getScene();
        if(scene.hasChildScene()){
            scene.back();
        }
        else{
            this.finish();
        }
    }

【问题讨论】:

  • 自己找到解决方案总是好的 :) 但是将您的解决方案作为答案发布并从标题中删除“已解决:”
  • Hey Erick....您可以从上面的问题中添加删除您的答案部分并在下面回答。并将其标记为已接受的答案...这对未来的读者会有所帮助

标签: android andengine


【解决方案1】:

您可以通过以下两种方式之一覆盖后退键,通过覆盖 onBackPressed() 方法或 dispatchKeyEvent() 方法

覆盖 onBackPressed:

@Override
public void onBackPressed()
{
    // your code here
}

重写 dispatchKeyEvent:

@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        // your code here
    }
    return (yourbooleanhere);
}

【讨论】:

  • 但是如果我在第一个场景中,如何从一个场景返回到前一个场景并退出?
  • 你可以在需要调用的地方调用finish()。这将退出一个活动并带你回到上一个屏幕。请记住,我不是为您编写程序,其余的由您自己解决。
  • 我知道如何完成它问题是我不明白如何知道场景是否是第一个因为不存在方法 hasParentScene()
  • 听起来你对 android Intent 的工作原理一无所知。我会阅读如何开始(和完成)一个新的意图,因为这听起来像是你想要完成的。 developer.android.com/guide/topics/intents/intents-filters.html
【解决方案2】:

在这个意义上,我和你一样处于两难境地。我解释。我有一个像使用 ViewFlipper 一样的活动。我需要转到我在 ViewFlipper 标签上写的不同“布局”,当我处于不是活动的主要“布局”的特定“布局”中时,我需要回到主要按下后退按钮,但是,它不起作用。

为了解决这个难题,我重写了OnBackPressed 函数,例如:

@Override
public void onBackPressed() {
    if (condition) {
        // go to the main 
    } else {
        super.onBackPressed();
}
}

condition,顾名思义,你怎么知道你在主要的“布局”中?例如,在我的 ViewFlipper 中,主要的“布局”按数字排序,从 0 开始,所以我的主要“布局”是 0,我怎么知道我在 0 的“布局”中,viewflipper.getDisplayedChild()。如果它返回 0,我是否留在主“布局”中,否则。

如此简单,但我知道,并不那么优雅。这是一个想法,我认为这可以帮助你。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    相关资源
    最近更新 更多