我使用以下代码成功在 Java (1.5) 小程序游戏中播放声音:
// get an available clip to play it
Clip clip = null;
for (Clip clipTemp : players) {
if (!clipTemp.isOpen()) {
clip = clipTemp;
break;
}
}
if (clip == null) {
// no available player found, don't play
return;
}
clip.open(audioFormat, audioByteData, 0, audioByteData.length);
clip.start();
(播放器是我在开始时打开的剪辑列表,目的是减少延迟,线路监听器在检索到停止事件时关闭线路。)
我面临的问题是播放声音时间歇性延迟最多 1 秒。这可真够可怜的。
有什么办法可以改善这一点吗?是SourceDataLines
值得考虑?
只要您想播放剪辑,Java Applet 就会对您的剪辑进行流式传输,这就是为什么您会遇到延迟,因为声音文件尚未加载到内存中。
我已经有一段时间没有进行 Java 小程序编程了,但我确实记得我曾经预加载所有剪辑,然后后续的播放调用不会重新打开文件。
这是我的一个旧项目中的一些代码
Clip shoot;
private loadShootWav()
{
AudioInputStream sample;
sample = AudioSystem.getAudioInputStream(this.getClass().getResource("shoot.wav"));
shoot = AudioSystem.getClip();
shoot.open(sample);
}
public void playShootSFX()
{
shoot.stop();
shoot.setFramePosition(0);
shoot.start();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)