Я хочу воспроизвести один и тот же файл несколько раз подряд, но после воспроизведения файла хочу настроить следующее воспроизведение другим способом. Я могу использовать свойство .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()
}
}