LIBGDX:我怎么知道声音播放完毕?

时间:2012-07-28 21:19:35

标签: libgdx

Sound API似乎缺少一个表示声音播放完毕的功能。有没有其他方法可以找出声音是否完成?

3 个答案:

答案 0 :(得分:9)

据我所知,尽管Music API有一个isPlaying()函数和getPosition()函数,但据我所知,OpenAL和Android的底层声音后端甚至都没有在内部跟踪信息,而且还没有向libgdx提交补丁。 documentation

答案 1 :(得分:0)

只需设置此

sound.setLooping(false);
这样它就不会一次又一次地运行。

并检查声音是否正在播放或 不要这样做。

制作一个布尔变量

boolean soundplaying;

在render方法中执行此操作

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

并制作日志

gdx.app.log("","sound"+soundplaying);

答案 2 :(得分:0)

您可以通过存储声音实例ID(例如, play()loop()返回。示例代码:

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调用它,以确保先前的声音不会停止。