2011-10-11 82 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,我就停留在主要的「佈局」中,否則。

這麼簡單,但我知道,不那麼優雅。這是一個想法,我認爲這可以幫助你。