【问题标题】:Libgdx- Music doesn't stopLibgdx-音乐不会停止
【发布时间】:2018-12-10 07:55:02
【问题描述】:

我有一个用于动态壁纸的 android 应用程序,用户可以在其中动态播放和停止音乐。我正在使用 libgdx,并且在我的类的 render() 方法中开始音乐,从 libgdx 实现 ApplicationListener。

我正在检查渲染方法中的共享首选项,以检查播放音乐选项是启用还是禁用。如果启用,我创建音乐(如果尚未创建或未播放),如果禁用,我检查音乐是否正在播放 - 如果是,我调用 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;
                    }
                }
        }

奇怪的行为: 当我的 shouldPlayMusic = false/true 时,以及当我去其他活动时,音乐分别停止/继续,当我回来时,无论 shouldPlayMusic 的值如何,音乐都会继续播放。

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

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

    music == null
    

    并且不要在 render 方法中创建你的 misic,对于所有建议,你应该在特殊的静态方法中进行,一开始你可以在你的 create()/show() 方法中进行,这可能是这种情况的一些问题。如果没有帮助就写。您使用的是 Android 还是桌面模拟器?

    【讨论】:

    • 做到了!我在 onCreate() 方法中创建了音乐,并将其从 render() 方法中的条件中删除。谢谢!
    • 很高兴听到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多