所以我有5个视图控制器,每个控制器上有多个按钮。
我还有一个滚动视图,因此您可以在它们之间滑动/滚动。
我的问题是,当我按下V1上的一个按钮时,会播放声音,如果我滑到V2并按下一个按钮,如果声音在第一个视图上没有完成,则两个声音都会互相播放(反之亦然)。
我正在使用AVAudioPlayer
如何防止这种情况发生?
所以我创建了诸如以下的对象:
let audioObject1 = AllViewsModel(title: "Watering Plants", sound: createPlayerAndFilePath("ILoveit")!)
我标记了每个按钮:
@IBAction func playPauseButtons(sender: UIButton) {
switch sender.tag {
case 10:
stopAllSounds()
startTimeAndPlayAudio(audioObject1.sound!)
buttonSpringLikeAnimation(allButtonsConnectedToThisOutlet[0])
print("1") }
调用的top函数是我的所有音频对象:
func stopAllSounds() {
audioObject1.sound?.stop()
audioObject2.sound?.stop()
audioObject3.sound?.stop()
audioObject4.sound?.stop()
audioObject5.sound?.stop()
audioObject6.sound?.stop()
audioObject7.sound?.stop()
audioObject8.sound?.stop()
audioObject9.sound?.stop()
}
启动和播放功能是我创建一个AVAudioPlayes实例并定位mp3:
func createPlayerAndFilePath(nameOfMediaFile: String) -> AVAudioPlayer? {
do {
let audioFile = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(nameOfMediaFile, ofType: "mp3")!), fileTypeHint: "AVFileTypeMPEGLayer3")
return audioFile
} catch {
print("Audio file error")
}
return nil
}
我为5个视图控制器做了这个。我可以阻止音频在每个视图中重叠,但如果我按下另一个视频上的按钮并说第一个视图仍在播放,那么我就有问题。