Swift 在AVAudioPlayer中播放音调时,如何在循环之间添加延迟?

Swift 在AVAudioPlayer中播放音调时,如何在循环之间添加延迟?,swift,avaudioplayer,Swift,Avaudioplayer,我已经创建了一个示例函数,它将使用无限循环立即播放短时音调。代码如下: let audioPlayer = try AVAudioPlayer(contentsOf: url) audioPlayer.numberOfLoops = -1 audioPlayer.play() 如何在播放器再次播放音调之前创建5秒延迟?有什么方法可以做到这一点吗?不幸的是,没有简单的方法可以做到这一点。您应该使用AVAudioPlayerDelegate。请在下面找到一些示例: class ViewContro

我已经创建了一个示例函数,它将使用无限循环立即播放短时音调。代码如下:

let audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer.numberOfLoops = -1
audioPlayer.play()

如何在播放器再次播放音调之前创建5秒延迟?有什么方法可以做到这一点吗?

不幸的是,没有简单的方法可以做到这一点。您应该使用AVAudioPlayerDelegate。请在下面找到一些示例:

class ViewController: UIViewController, AVAudioPlayerDelegate
{
    private var player: AVAudioPlayer!

    @objc private func startPlaying()
    {
         self.player = try? AVAudioPlayer(contentsOf: url)
         self.player.delegate = self
         self.player.play()
    }

    func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
    {
         self.perform(#selector(startPlaying), with: nil, afterDelay: 5)
    }
}
当您想要停止音频的继续时,不要忘记停止选择器:

NSObject.cancelPreviousPerformRequests(withTarget: self)

谢谢,这对我帮助很大!