Swift的新手。我试图控制我的应用程序背景音乐的播放。我目前在我的MainTabController中启动音乐。当我浏览其他VC时,它会按预期播放。但是,我想在显示某些VC时停止。
我已经设置了MusicHelper课程。
class MusicHelper {
static let sharedHelper = MusicHelper()
var audioPlayer: AVAudioPlayer?
func playBackgroundMusic(file : String, repeats : Int) {
let aSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(file, ofType: "mp3")!)
do {
audioPlayer = try AVAudioPlayer(contentsOfURL:aSound)
audioPlayer!.numberOfLoops = repeats
audioPlayer!.prepareToPlay()
audioPlayer!.play()
} catch {
print("Cannot play the file")
}
}
func togglePlayer(){
if((audioPlayer?.playing) == true){
audioPlayer?.stop()
}else{
audioPlayer?.play()
}
}
}
我最初是如何在MainTabController中启动音乐的:
class MainTabController: UINavigationController {
var bgMusic : MusicHelper = MusicHelper()
override func viewDidLoad() {
super.viewDidLoad()
// other code
bgMusic.playBackgroundMusic("music_background", repeats: -1)
}
}
我正在尝试访问同一个bgMusic实例,但它返回nil。我的假设是我实际上正在创建一个MainTabController的新实例?如果是这样,我将如何访问MusicHelper的同一个实例?
class VideoViewController: OrientationLockedVC {
//Other code
var mVC : MainTabController = MainTabController()
func onImage() {
//other code
mVC.bgMusic.audioPlayer!.stop()
// other code
}
}
我没有得到任何明确的错误,但如果我设置了一个断点,我可以清楚地看到audioController是零。
由于
答案 0 :(得分:0)
更改var audioPlayer: AVAudioPlayer?
public static var audioPlayer: AVAudioPlayer?
并致电
if MusicHelper.audioPlayer != nil{
MusicHelper.audioPlayer.stop()
}