所以我一直在做一个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 时在需要时被调用。
请提供有关这些更改的反馈(好/坏/由于这个和那个原因要避免等)。谢谢!