【发布时间】:2018-11-21 12:44:36
【问题描述】:
我有一个关于AVFoundation 和AVAudioPlayer 的问题。
在我的项目中,我有一个视图,你从哪里开始,第二个视图是动作发生在哪里。当我启动应用程序时,我告诉第一个视图开始播放我的背景音乐,并且当用户在第二个视图中时它必须继续。但是每当您回到第一个视图时,它会再次开始播放歌曲,即使它已经在播放。所以我最终得到了很多回声。 我怎样才能防止这种情况发生?
这是我的代码:
import UIKit
import AVFoundation
class StartViewController: UIViewController {
var backgroundPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
//background music file
let sound = Bundle.main.path(forResource: "background_music", ofType: "mp3")
do {
backgroundPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound!))
}
catch {
print(error)
}
playBackgorundMusic()
}
func playBackgorundMusic() {
if backgroundPlayer.isPlaying {
//do nothing
} else {
backgroundPlayer.play()
}
}
}
【问题讨论】:
-
如果你想暂停你的播放多个
ViewController然后在AppDelegate中实现播放暂停代码,这样你就可以轻松地播放暂停播放器。 -
如何在两个视图控制器之间切换?因为如果您在第一个视图控制器上按下并关闭第二个视图控制器,这应该已经正常工作了。