2013-02-25 79 views
1

我有3個場景。AndEngine - 在ParentScene中播放的聲音也在ChildScene中播放

  1. GameModeScene
  2. PlayModeScene
  3. GameScene

在GameModeScene和PlayModeScene我打聲每當用戶觸摸場景

-public class GameModeScene extends Scene implements IOnSceneTouchListener{} 
-public class PlayModeScene extends Scene implements IOnSceneTouchListener{} 

這是怎麼我打聲onSceneTouchEvent

public boolean onSceneTouchEvent(Scene pScene,TouchEvent pSceneTouchEvent) { 

    if(pSceneTouchEvent.isActionDown()){ 
     // This Method plays sound 
     this.animateSparkles(pSceneTouchEvent.getX(),pSceneTouchEvent.getY()); 
    } 
    return false; 
} 

在更改場景時,我將PlayModeScene設置爲ChildScene作爲GameModeScene,然後將GameScene設置爲ChildScene作爲GameModeScene。

在GameScene中,我不會在任何地方播放聲音,但聲音仍在播放。它顯然是來自前一場景。 我該如何阻止這一點。我不想在GameScene中聽到這種聲音。

這是在將場景從PlayModeScene更改爲GameScene時所做的工作。

mActivity.getEngine().runOnUpdateThread(new Runnable(){ 
      public void run() { 
       mPlayModeScene.clearTouchAreas(); 
       mPlayModeScene.detachChildren(); 

       mActivity.getEngine().clearUpdateHandlers(); 
       mPlayModeScene.setChildScene( 
        mActivity.getSceneController().getScene(SceneType.SinglePlayerNewGameScene) 
       ); 
      } 
    }); 

回答

0

如果要設置在GameModeScene使用TouchEvent聲音,那麼這個聲音可能會在這兩個GameModeScene的孩子繼承。所以,如果你想要的聲音在PlayedModeScene播放過的那一幕作爲參數(pScene):

公共布爾onSceneTouchEvent(場景pScene,的TouchEvent pSceneTouchEvent){

if(pSceneTouchEvent.isActionDown()){ 
    // This Method plays sound 
    this.animateSparkles(pSceneTouchEvent.getX(),pSceneTouchEvent.getY()); 
} 
return false; 

}

(這假設你將GameModeScene傳遞到pScene)