我在我的Flex项目中嵌入了一个mp3用作音效,但我发现每次播放时,从我调用.play()到你能听到的时间都会延迟大约半秒钟声音.这使得它很奇怪,因为我希望声音效果与游戏事件同步.我的mp3本身只有大约五分之一秒,所以这不是因为mp3的内容.
我正在嵌入
[Embed(source="assets/Tock.mp3")]
[Bindable]
public static var TockSound:Class;
public var tock_sound:SoundAsset;
然后玩
if (tock_sound == null) {
tock_sound = new TockSound() as SoundAsset;
}
Alert.show("tock");
tock_sound.play();
我知道有一个延迟,因为警报显示后声音播放约半秒钟.我确实认为这可能是构建TockSound的初始加载时间,但是所有后续调用都会出现延迟.
如何在播放声音时避免这种延迟?
更新:事实证明,只有在Linux上播放swf时才会出现此延迟.我相信这是Adobe的Flash播放器中特定于Linux的漏洞.
最佳答案 不确定原因,除了Flash总是有一些不好的音频延迟问题.阅读Tinic的博客,了解这些内容:
http://www.kaourantin.net/
有一件事可能会有所帮助:确保你的MP3是44.1kHz,否则Flash需要重新取样.
你实际上可以嵌入一个WAV文件,只需要工作.您将其嵌入为字节数组,并在FP9中动态构建SWF文件.非常可怕,但可行. :-)在FP10中,您可以使用动态声音API,因此很容易.