如何让我的iOS应用程序不断循环播放声音播放列表?

时间:2015-06-25 08:52:27

标签: ios swift avaudioplayer

我试图创建一个播放与阵列内容相关的一系列铃声的应用程序,每当播放所有铃声时,应用程序应该从阵列的开头再次开始播放它们。

这是我的代码:

var counter = 0
var song = ["1","2","3","4"]

func music() {
    while counter < song.count {

        var audioPath = NSBundle.mainBundle().pathForResource("\(song[counter])", ofType: "wav")!
        var error : NSError? = nil
        player = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath), error: &error)
        if error == nil {
            player.delegate = self
            player.prepareToPlay()
            player.play()
        }


        func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
            if flag {
                counter++
            }
        }

        if ((counter + 1) == song.count) {
            counter = 0
        }

    }
}

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

这里不需要循环。逻辑如下:你播放音乐文件,当这个文件结束时你增加计数器并播放下一个文件

developmentRegion = English;
            hasScannedForEncodings = 0;
            knownRegions = (
                en,
                Base,
            );

答案 1 :(得分:0)

您可以使用AVQueuePlayer ...

轻松完成此操作
let song = ["1","2","3","4"]

func music() {

    let items = song.compactMap {
        Bundle.main.url(forResource: "\($0)", withExtension: "wav")
    }.map {
        AVPlayerItem(url: $0)
    }

    let player = AVQueuePlayer(items: items)

    player.delegate = self
    player.play()
}