1

我有 3 个场景。

  1. 游戏模式场景
  2. 播放模式场景
  3. 游戏场景

在 GameModeScene 和 PlayModeScene 中,每当用户触摸场景时,我都会播放声音

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

这就是我在SceneTouchEvent上播放声音的方式

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)
                 );
            }
    });
4

1 回答 1

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)

于 2013-02-26T00:44:45.013 回答