我正在观看有关在SpriteKit中预加载声音的教程,以避免在第一次播放声音时出现延迟和帧速率下降。这就是他们使用prepareToPlay()
方法使用AVAudioPlayer预加载声音的方式:
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 {
}
}
然后使用像这样的SKAction播放声音:
self.runAction(SKAction.playSoundFileNamed("sound1.mp3", waitForCompletetion: false)
这实际上如何预加载声音?当您执行prepareToPlay()
方法时,是否有一些对内存中实际声音文件的引用?似乎我必须使用AVAudioPlayer或audioPlayer
变量,因为这是我使用prepareToPlay(
)方法,而不是仅仅引用SKAction中的声音文件。