0

だから私はlibGDXプロジェクトに取り組んでおり、ここで問題に遭遇しました:

 public class Main extends ApplicationAdapter implements Screen {
      (...)
 @Override
 public void create() {
 (...)
 //Starts playing Main theme Music
 MusicPlayer.determineMusic(mainTheme, splash);

 }

 public void render() {

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();

        //was:
        //splash.splashRenderer(mainTheme, batch, splashSprite);

        //changed to:
        splash.splashRenderer(batch, splashSprite);

    batch.end();

    System.out.println("******************End of Render******************");
}


public class SplashScreen {


 Music gameTheme ;

    public SplashScreen(){
    }

    public void splashRenderer(SpriteBatch batch, Sprite splashSprite) {
    batch.draw(splashSprite, 0, 0, MyConstants.WINDOW_WIDTH,                    MyConstants.WINDOW_HEIGHT);
    }

   @Override
   public void show() {
       //gameTheme = Gdx.audio.newMusic(Gdx.files.internal("blah.mp3"));
       //gameTheme.play();
   }

   @Override
   public void hide() {
       //gameTheme.dispose();
   }

   @Override
   public void dispose() {
      //gameTheme.dispose();

   }

}

public class MusicPlayer {

   protected MusicPlayer(){
   }

   public static void determineMusic(Music Theme, AbstractScreen screen){

       if ((screen instanceof GameScreen) == false){
           Theme.play();
       }
   }

}

ここまでのコードは、基本的に音楽ファイルとスプライトを読み込んで、splashRenderer メソッドで画面に描画するだけなのですが、音楽が始まらないのが難点です。どんな助けでも大歓迎です。前もって感謝します。

EDIT1〜Screenを実装し、メソッドをsplashRenderer(SpriteBatch、Sprite)に変更し、音楽ファイルをshowメソッドでロードして再生し、hideメソッドとdisposeメソッドでdispose()しました。自動的に行われると思うので、pause() メソッドには何も追加しませんでした。

EDIT2~今回も音楽が始まらないことに気付きました。私が思いついた解決策は、再生するかどうかとどのトラックを再生するかを決定する新しいクラス MusicPlayer() を作成することです。musicPlayer は最初に create() で明示的に呼び出され、おそらく mouseEvents を処理するときに必要なときに呼び出されます。

これらの変更についてフィードバックをお寄せください (良い/悪い/回避すべき理由など)。ありがとう!

4

1 に答える 1