だから私は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 を処理するときに必要なときに呼び出されます。
これらの変更についてフィードバックをお寄せください (良い/悪い/回避すべき理由など)。ありがとう!