Ios 在SpriteKit中预加载声音
我正在看一个关于在SpriteKit中预加载声音的教程,以避免首次播放声音时出现延迟和帧速率下降。他们说使用AVAudioPlayer使用Ios 在SpriteKit中预加载声音,ios,swift,audio,sprite-kit,preload,Ios,Swift,Audio,Sprite Kit,Preload,我正在看一个关于在SpriteKit中预加载声音的教程,以避免首次播放声音时出现延迟和帧速率下降。他们说使用AVAudioPlayer使用prepareToplayer()方法预加载声音: import AVFoundation override func didMoveToView(view: SKView) { do { let sounds = ["sound1", "sound2"] for sound in sounds {
prepareToplayer()
方法预加载声音:
import AVFoundation
override func didMoveToView(view: SKView) {
do {
let sounds = ["sound1", "sound2"]
for sound in sounds {
let audioPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(sound ofType: "mp3")!))
audioPlayer.prepareToPlay()
}
}
catch {
}
}
然后用这样的动作播放声音:
self.runAction(SKAction.playSoundFileNamed("sound1.mp3", waitForCompletetion: false)
这实际上是如何预加载声音的?执行
prepareToPlay()
方法时,内存中是否有实际声音文件的参考?似乎我必须使用AVAudioPlayer或audioPlayer
变量,因为我在上使用了prepareToPlay(
)方法,而不是仅仅引用SKAction中的声音文件。不确定这是否真的是真的,除非有缓存,否则需要文档。要预加载音频,只需创建SKAudioNodes,但不要将其添加到场景中,或者,如果需要使用SKActions,请将该操作另存为变量,并在需要时使用该变量。创建SKAudioNode后,是否应继续将其添加到场景中?然后使用.play()
方法来使用它,而不是将它添加到场景中并使用.play()
?这取决于您进行了多少操作,如果您要预加载100个音频节点,您不希望所有100个都在sceneGood点上。我将计划将其添加到场景中,播放声音,然后在播放结束后将其从场景中删除。不确定这是否属实,除非有缓存,否则需要文档。要预加载音频,只需创建SKAudioNodes,但不要将其添加到场景中,或者,如果需要使用SKActions,将动作另存为变量,并在需要时使用该变量我是否应该在创建SKAudioNode后继续将其添加到场景中?然后使用.play()
方法来使用它,而不是将它添加到场景中并使用.play()
?这取决于您进行了多少操作,如果您要预加载100个音频节点,您不希望所有100个都在sceneGood点上。我将计划将其添加到场景中,播放声音,然后在播放结束后将其从场景中移除。