我试图创建一个播放与阵列内容相关的一系列铃声的应用程序,每当播放所有铃声时,应用程序应该从阵列的开头再次开始播放它们。
这是我的代码:
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
}
}
}
我怎样才能做到这一点?
答案 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()
}