我在Libgdx(Android)中构建游戏,每次用户触摸某个对象时我都会播放声音。对象的声音和视觉选择应该协调一致,但是当我播放声音时,我会调用sound.play()以及声音开始实际播放的那一刻有200ms的延迟。
我正在使用AssetManager在游戏开始之前加载所有声音文件,我已经确认时间延迟在sound.play()调用和sound.getPosition()停止为0之间。所以我的问题是的,这里发生了什么? Libgdx或Android在两个需要200毫秒的时刻之间做什么,假设文件已经加载?这是一个.wav文件,因此根本没有压缩。我有什么遗漏或某种方法可以修复它吗?
答案 0 :(得分:0)
在 libGDX 1.9.12 中,您可以使用 AsynchronousAndroidAudio
来帮助您解决问题。
您可以通过在 AsynchronousAndroidAudio
类中覆盖此方法来更改默认的 LibGDX 行为并使用 AndroidLauncher
:
@Override
public AndroidAudio createAudio(Context context, AndroidApplicationConfiguration config) {
return new AsynchronousAndroidAudio(context, config);
}
有一个限制:不能选择使用声音 ID。
有关详细信息,请参阅 official documentation 以及 the pull request
此外,如果出于任何原因您需要声音 ID,您可以以此实现为例,并为您的项目找到解决方法。