18

Sound API 似乎缺少一个指示声音已播放完毕的函数。有没有其他方法可以确定声音是否完成?

4

3 回答 3

8

据我所知,OpenAL 和 Android 的底层声音后端甚至不会在内部跟踪信息,尽管音乐 API 根据文档具有 isPlaying() 函数和 getPosition() 函数,但并非没有向 libgdx 提交补丁

于 2012-07-28T21:54:21.690 回答
0

只需设置这个

sound.setLooping(false);

这样它就不会一次又一次地运行。

并检查声音是否正在播放。

做一个布尔变量

boolean soundplaying;

在渲染方法中这样做

if(sound.isPlaying()){
soundplaying =true
}

并做一个日志

gdx.app.log("","sound"+soundplaying);
于 2013-10-05T12:35:58.370 回答
-1

您可以通过存储例如play()loop()返回的声音实例 ID 来跟踪这一点。示例代码:

private Sound sound;
private Long soundId;

...

public void startSound()  {
    if (soundId != null) {
        return;
    }
    soundId = sound.loop();   // or sound.play()
}

public void stopSound() {
    sound.stop(soundId);
    soundId = null;
}

如果您不想stopSound()从客户端代码调用,您可以只调用它startSound()而不是return, 以确保停止任何先前的声音。

于 2020-02-22T17:58:13.397 回答