我试图在iOS 8中使用新的AVAudioEngine.
看起来在声音文件播放完毕之前调用了player.scheduleFile()的completionHandler .
我正在使用一个长度为5s的声音文件 - 并且 - println()
声音在声音结束前约1秒钟出现-Message.
我做错了什么或者我是否误解了完成握手的想法?
谢谢!
这是一些代码:
class SoundHandler {
let engine:AVAudioEngine
let player:AVAudioPlayerNode
let mainMixer:AVAudioMixerNode
init() {
engine = AVAudioEngine()
player = AVAudioPlayerNode()
engine.attachNode(player)
mainMixer = engine.mainMixerNode
var error:NSError?
if !engine.startAndReturnError(&error) {
if let e = error {
println("error \(e.localizedDescription)")
}
}
engine.connect(player, to: mainMixer, format: mainMixer.outputFormatForBus(0))
}
func playSound() {
var soundUrl = NSBundle.mainBundle().URLForResource("Test", withExtension: "m4a")
var soundFile = AVAudioFile(forReading: soundUrl, error: nil)
player.scheduleFile(soundFile, atTime: nil, completionHandler: { println("Finished!") }) …
Run Code Online (Sandbox Code Playgroud)