我如何让iOS应用程序在播放列表中不断循环播放声音?
我正在尝试制作一个应用程序,它可以播放一系列与数组内容相关的蜂鸣音,每当播放所有蜂鸣音时,应用程序都应该从数组开始重新播放 这是我的代码:我如何让iOS应用程序在播放列表中不断循环播放声音?,ios,swift,avaudioplayer,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])",
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
}
}
}
var计数器=0
变量宋=[“1”、“2”、“3”、“4”]
func music(){
当计数器
如何实现这一点?这里不需要循环。逻辑如下:播放一个音乐文件,当该文件结束时,递增计数器并播放下一个文件
var counter = 0
var song = ["1","2","3","4"]
func music()
{
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)
{
player.delegate = nil
if flag {
counter++
}
if ((counter + 1) == song.count) {
counter = 0
}
music()
}
您可以使用
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()
}
尝试将玩家的代理设置为零,如我编辑的答案中所示