【发布时间】:2020-06-17 03:59:52
【问题描述】:
如果一个人按下按钮 10 次,那么他们将听到 10 个不同的歌曲列表连续播放。我希望如果一个人按 10 次,他们只会听一个歌曲列表。我基本上是在尝试创建一个重置按钮。
var myQueuePlayer: AVQueuePlayer?
var avItems: [AVPlayerItem] = []
func audio () {
var items: [String] = ["one", "two", "three", "four", "five"]
items.shuffle()
for clip in items {
guard let url = Bundle.main.url(forResource: clip, withExtension: ".mp3") else {
// mp3 file not found in bundle - so crash!
fatalError("Could not load \(clip).mp3")
}
avItems.append(AVPlayerItem(url: url))
//button.isHidden = true
}
}
@IBAction func didTapButton() {
audio()
if myQueuePlayer == nil {
// instantiate the AVQueuePlayer with all avItems
myQueuePlayer = AVQueuePlayer(items: avItems)
} else {
// stop the player and remove all avItems
myQueuePlayer?.removeAllItems()
// add all avItems back to the player
avItems.forEach {
myQueuePlayer?.insert($0, after: nil)
}
}
// seek to .zero (in case we added items back in)
myQueuePlayer?.seek(to: .zero)
// start playing
myQueuePlayer?.play()
}
【问题讨论】:
-
你停止播放器的部分在哪里?
-
@matt 我试图在任何地方阻止它,但这并不能解决问题。问题似乎是当我重新添加 avItems 时,如果一个人按下按钮 10 次,那么 avItems 将被添加 10 次。我花了一天半的时间试图从不同的角度解决它,但始终无法解决。
-
@LeoDabus 我已经尝试在外面声明它,但问题仍然存在。
-
@YumelHernandez 我的错,他们不一样
-
所以你基本上是说
removeAllItems什么都不做?
标签: arrays swift audio avqueueplayer