我有一个动态壁纸的Android应用程序,用户可以动态播放和停止音乐 . 我正在使用libgdx,我在我的类的render()方法中启动音乐,从libgdx实现ApplicationListener .
我正在检查render方法中的共享首选项以检查是否启用了播放音乐选项 . 如果启用,我会创建音乐(如果尚未创建或未播放),如果禁用,我会检查音乐是否正在播放 - 如果是,我会调用music.stop() . 但是,即使在调用music.stop()之后,音乐仍然继续播放 . 我试图设置music.setLooping(false),但音乐循环继续播放 .
这是我的代码:
public class MyAppListener implements ApplicationListener, InputProcessor {
Music music;
@Override
public void render() {
if (shouldPlayMusic) {
if (music == null || !music.isPlaying()) {
music = Gdx.audio.newMusic(Gdx.files.internal("playback.mp3"));
music.setVolume(0.5f);
music.setLooping(true);
music.play();
}
} else {
if (music != null && music.isPlaying()) {
music.setLooping(false);
music.stop();
music.dispose();
music = null;
}
}
}
Odd behavior: 当我的shouldPlayMusic = false / true时,当我去其他一些活动时,音乐会分别停止/继续,当我回来时,无论shouldPlayMusic的值如何,音乐都会继续播放 .
1 回答
这很奇怪,我可以建议你从if-else部分删除你的条件
并不是在渲染方法中创建你的misic,对于所有recomendation你应该在特殊的静态方法中进行,对于beginnig你可以在你的create()/ show()方法中做到这可能是这个条件的一些问题 . 写下来,如果它没有帮助 . 您使用的是Android或桌面模拟器吗?