1

3つのシーンがあります。

  1. GameModeScene
  2. PlayModeScene
  3. GameScene

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) として渡します。

public boolean onSceneTouchEvent(Scene 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 に答える