在Swift中播放没有滞后的声音

时间:2015-05-08 22:30:16

标签: ios swift audio openal

正如许多开发人员所知,使用AVAudioPlayer在游戏中播放声音会导致动画/动作不稳定,因为每次播放声音都会有微小的延迟。

我曾经在Objective-C中通过包装类(也在Obj-C中)使用OpenAL来克服这个问题。

我现在将Swift用于所有新项目,但我无法弄清楚如何使用Swift的包装类。我可以导入类(通过桥接头),但是当我需要在我的Swift文件中创建ALCdevice和ALCcontext对象时,Xcode将不接受它。

有没有人拥有或知道使用Swift的OpenAL播放声音的工作示例?或者也许在没有延迟的声音可以通过其他方式在Swift中实现?

1 个答案:

答案 0 :(得分:2)

我曾经遇到过延迟型问题,我希望你的问题与我遇到的问题相同。

在我的情况下,我使用Sprite-Kit来播放我的声音,使用SKAction.playSoundFileNamed:。它总是落后我希望它发挥的半秒钟。

这是因为为每个SKAction调用分配内存需要时间。要解决此问题,请将声音操作存储在变量中,以便稍后可以重复使用声音,而无需实例化新对象。它使我免于延误。这种技术也可能适用于AVAudioPlayer。