如果不播放音乐,则播放音乐,但如果已经在播放,则不要播放(Xcode,Swift4)



我有一个关于AVFoundationAVAudioPlayer的问题。

在我的项目中,我看到了你从哪里开始,以及行动发生的地方。当我启动应用程序时,我告诉第一个视图开始播放我的背景音乐,当用户处于第二个视图时,它必须继续。但每当你回到第一个视图时,它就会再次启动歌曲,尽管它已经在播放了。所以我最后得到了很多回声。我该如何防止这种情况发生?

这是我的代码,我还没有:

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()
}
}
}

您应该为音乐播放器创建一个singleton类来维护播放、暂停、停止等状态。

class MusicPlayerManager{
static let shared = MusicPlayerManager()
var backgroundPlayer = AVAudioPlayer()
init(){}
func playMusic(){
if backgroundPlayer.isPlaying {
//do nothing
} else {
backgroundPlayer.play()
}
}
}

相关内容

  • 没有找到相关文章

最新更新