Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 如何在Xcode10中循环AvAudioPlayerNode_Loops_Sprite Kit_Repeat_Avaudioengine_Avaudioplayernode - Fatal编程技术网

Loops 如何在Xcode10中循环AvAudioPlayerNode

Loops 如何在Xcode10中循环AvAudioPlayerNode,loops,sprite-kit,repeat,avaudioengine,avaudioplayernode,Loops,Sprite Kit,Repeat,Avaudioengine,Avaudioplayernode,嗨,我正在用SpriteKit制作一个iOS游戏,并决定使用AvAudioPlayerNode和引擎,而不是常规的AvAudioPlayerNode,这样我可以改变音高和播放速度,但我遇到了一个问题,AvAudioPlayerNode在播放后不会重复 我已经使用了许多来自堆栈溢出的答案,但是它们都非常过时,如果你碰巧解决了这个问题,你能确保它与我的代码一起工作吗?否则它就没用了 // " //通过这样做,可以在游戏视图控制器中运行 let audioPath = Bundle.main.path

嗨,我正在用SpriteKit制作一个iOS游戏,并决定使用AvAudioPlayerNode和引擎,而不是常规的AvAudioPlayerNode,这样我可以改变音高和播放速度,但我遇到了一个问题,AvAudioPlayerNode在播放后不会重复

我已经使用了许多来自堆栈溢出的答案,但是它们都非常过时,如果你碰巧解决了这个问题,你能确保它与我的代码一起工作吗?否则它就没用了

//

"

//通过这样做,可以在游戏视图控制器中运行

let audioPath = Bundle.main.path(forResource: "loop", ofType: "wav") ?? ""

    do
    {

        try? play(URL(fileURLWithPath: audioPath))
    }
    catch {
}

实际上我不知道从哪里开始我对Xcode还比较陌生,所以任何帮助都会很有用,请不要把事情弄得太复杂,我15岁了你想把你的文件读入缓冲区,然后安排播放器循环

let file = try AVAudioFile(forReading: url)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: file.fileFormat, frameCapacity: file.length)
try? read(into buffer: audioFileBuffer )
audioFilePlayer.scheduleBuffer(audioFileBuffer, atTime: nil, options:.Loops, completionHandler: nil)
audioFilePlayer.play()

我建议使用SKAudioNode。它附带了avAudioNode,可以转换为AVAudioPlayerNode,为您提供所需的功能。这会占用太多内存,有没有办法循环使用小的buffer@csguy也许回到1982年,想象一下82个声音文件在内存中,每个都有30秒。这在我的mac电脑上占用了大约700MB的内存,因为它们都是以整个声音文件大小的缓冲区加载到内存中的,这种方法会给IOS应用程序带来麻烦。。。所以我正在寻找一种循环设置缓冲区大小的方法,有没有一种方法?想象一下内存中有82个文件和声音文件。。。。为什么我需要想象82个声音文件需要循环。内存中没有82个文件,您最好更好地管理您的资源,只在内存中存储您需要的内容。因为我正在制作一个音频活套应用程序,屏幕上有82个按钮
let file = try AVAudioFile(forReading: url)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: file.fileFormat, frameCapacity: file.length)
try? read(into buffer: audioFileBuffer )
audioFilePlayer.scheduleBuffer(audioFileBuffer, atTime: nil, options:.Loops, completionHandler: nil)
audioFilePlayer.play()