2013-02-11 143 views
1

這裏後不會重置爲場景:AndEngine - 場景變量變更現場

我有以下場景:

  1. SplashScene
  2. LoadingScene
  3. GameModeScene
  4. PlayModeScene
  5. GameScene

我有一個SceneController類來管理場景之間的導航。
在SceneController中,我有所有場景的實例。

我正在初始化所有場景實例,並在LoadScene中加載所有場景資源。

當我從GameModeScene改變場景到PlayModeScene - Works完美無瑕。
但是,當我嘗試再次將場景更改爲GameModeScene時,在GameModeScene的第一次運行期間初始化的布爾值和其他變量保持不變,並且不會重置。

注意:變量是私有的每個類的和非靜態

我試過pGameModeSceneto.reset();但它不會工作。
Anyy建議?

下面的是我如何初始化現場insatnces


SceneController.loadSceneResources()

每個類的
public void loadSceneResources(SceneType mType){ 
     switch(mType){ 
     case SplashScene: 
      this.mSplashScene = new SplashScene(this.mActivity); 
      break; 


     case LoadingScene: 
      mLoadingScene = new LoadingScene(mActivity); 
      break; 

     case GameModeScene: 
      mGameModeScene=new GameModeScene(this.mActivity); 
      break; 

     case PlayModeScene: 
      mPlayModeScene=new PlayModeScene(this.mActivity); 
      break; 

     case GameScene: 
      break; 

      default: 
     } 
    } 

構造函數加載的資源。


下面是中號getiing當前場景實例

SceneController.getScene() 公共場景getScene(場景類型M型){

 switch(mType){ 
     case SplashScene: 
      this.mCurrentScene = mSplashScene; 
      break; 


     case LoadingScene: 
      this.mCurrentScene = mLoadingScene; 
      break; 

     case GameModeScene: 
      this.mCurrentScene = mGameModeScene; 
      break; 

     case PlayModeScene: 
      this.mCurrentScene = mPlayModeScene; 
      break; 

      default: 
     } 

回答

1

在org.andengine.entity.scene.Scene類,有一個reset()方法,這就是我想你指當你說

我試圖pGameModeSceneto.reset到() ;但它不會工作。

所有這些方法做如下:

@Override 
public void reset() { 
    super.reset(); 

    this.clearChildScene(); 
} 

您的場景(我認爲)正在擴展場景。所以當你調用reset()時,你所做的只是通過super.reset()調用初始化父級信息和最新的樹。 (場景擴展實體。)您在場景中創建和設置的私人字段都不會受此影響。要獲得所需的行爲,請在各個場景類中重寫reset()方法。確保在它們開始時調用super.reset()並添加初始化信息,即無論您的「空白」場景是什麼樣子。事情是這樣的:

@Override 
public void reset() { 
    super.reset(); 
    myLocalInt = 0; 
    myLocalFancyPantsObject = null; 
} 
+0

對不起,我應該已經注意到@ jmr499485基本上是說同樣的事情(和我之前說的話)。你應該給他支票。除非我們都誤解了你,否則我們對「變量不重置」問題的回答是「他們爲什麼會這樣?」 – 2013-02-12 01:23:04

+0

Yeahh我終於做了同樣的事情。我明白這是一個java的基礎知識,變量不會重置,直到您重新創建類的實例或手動重置它們;感謝你們倆 – 2013-02-12 18:21:22

+0

這是一個功能,而不是一個錯誤。 :)如果您想授予其中一個綠色的選中標記,那很感激。 – 2013-02-12 21:35:05

1

你剛纔說的非常良好的感覺給你什麼告訴我們。

您可能需要爲場景添加reset()某種方法,並調用當您切換到其他場景時 - 或者當您離開特定場景時。

但是...如果他們是你的班級中的變量,那麼reset()方法內置的方法不能重置你的變量。

添加類似resetSceneVars()的方法,並重新初始化任何需要與創建場景時相同的內容。只要你保持對場景的引用,那些變量將保持其最新值。