首页 文章

Libgdx-音乐不会停止

提问于
浏览
0

我有一个动态壁纸的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 回答

  • 1

    这很奇怪,我可以建议你从if-else部分删除你的条件

    music == null
    

    并不是在渲染方法中创建你的misic,对于所有recomendation你应该在特殊的静态方法中进行,对于beginnig你可以在你的create()/ show()方法中做到这可能是这个条件的一些问题 . 写下来,如果它没有帮助 . 您使用的是Android或桌面模拟器吗?

相关问题