2011-10-11 114 views
3

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

我尝试了在多屏幕类:

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

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

this.mEngine.getScene().setChildScene(scene);


现场工作不同于我如何了解更换core.getEngine().setScene(scene);的场景管理器,我有解决

+2

总是很好找你自己的解决方案:)但发布你的解决方案作为答案,并从标题中删除“已解决:” – joshcomley

+0

嘿埃里克....你可以添加删除你的答案部分从上面的问题,并在下面回答。并将其作为接受的答案勾选...对未来的读者 – Crawler

回答

2

您可以通过以下两种方式之一覆盖后退键:ei通过覆盖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); 
} 
+0

会有帮助,但是如果我在第一个场景中,我如何才能从一个场景返回到前一个场景并退出? – Erick

+0

你可以在需要调用的地方调用finish()。这将退出一个活动并将您带回到上一个屏幕。请记住,我不是为你编写这个程序,其余的是为你弄清楚。 – eplewis89

+0

我知道如何完成它的问题是,我不明白如何知道如果场景是第一bec bec不存在的方法hasParentScene() – Erick

0

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

要解决此两难困境,我重写OnBackPressed功能,如:

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

其中condition,如名字一样,你怎么知道你是在主要的“布局”?例如,在我的ViewFlipper中,主“布局”按数字排序,从0开始,所以我的主“布局”为0,我如何知道我处于0布局“viewflipper.getDisplayedChild()”。如果它返回0,我就停留在主要的“布局”中,否则。

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