Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SpriteKit中预加载声音_Ios_Swift_Audio_Sprite Kit_Preload - Fatal编程技术网

Ios 在SpriteKit中预加载声音

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 {

我正在看一个关于在SpriteKit中预加载声音的教程,以避免首次播放声音时出现延迟和帧速率下降。他们说使用AVAudioPlayer使用
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点上。我将计划将其添加到场景中,播放声音,然后在播放结束后将其从场景中移除。