我想连续播放几次相同的文件,但是在播放完文件后,想要以另一种方式配置下一次播放
我可以使用.looping = true
属性
但是启用循环后,我无法在播放器中触发completionHandler
现在我的解决方案在下面,但是使用这种方法,播放器加载文件时会有些延迟
我可以实现与.looping = true
相同的行为,但是还可以跟踪下一个文件何时播放吗?
import UIKit
import AVFoundation
import AudioKit
class TestViewController: UIViewController {
var file: AKAudioFile!
var players = [AKAudioPlayer]()
var mixer: AKMixer!
override func viewDidLoad() {
file = try! AKAudioFile(readFileName: "Test Sound.wav")
for i in 0...5 {
let player = try! AKAudioPlayer(file: file)
player.looping = false
player.completionHandler = {
self.players[(i + 1) % 6].play()
print("hey")
}
players.append(player)
}
mixer = AKMixer(players)
AudioKit.output = mixer
try! AudioKit.start()
players[0].play()
}
}