检测 AVAudioPlayer 中的播放结束

mik*_*098 4 avfoundation avaudioplayer swift swift-playground

我有几个短的 .mp3 声音,我将它们存储在数组中,并希望连续播放它们。有什么方法可以检测 AVAudioPlayer 何时停止播放,以便我可以调用完成处理程序并播放下一个声音?我知道有一个委托,但我正在使用 Playground 和 SKScene。

Sag*_*han 5

哎呀@codddeer123,

AVAudioPlayer 包含 AVAudioPlayerDelegte 方法,该方法在音频播放完成时调用。

我已经将它作为我的课程的扩展来实现,你可以做你喜欢的事情。

extension MyViewController: AVAudioPlayerDelegate {

    func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
        if flag {
            // After successfully finish song playing will stop audio player and remove from memory
            print("Audio player finished playing")
            self.audioPlayer?.stop()
            self.audioPlayer = nil
            // Write code to play next audio.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处编写代码来播放下一个音频。根据你的问题我已经发布了这个答案。如果您不了解 AVAudioPlayer,请参阅苹果官方文档或其他在线教程。

我希望这能帮到您。