Sound API似乎缺少一个表示声音播放完毕的功能。有没有其他方法可以找出声音是否完成?
答案 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
调用它,以确保先前的声音不会停止。