-1
我正在編寫一個在SKScenes之間切換的遊戲。當我從開始屏幕開始播放背景音樂時,切換到新屏幕並返回到開始屏幕,音樂開始再次播放。 我無法找到如何運行音樂一次,而不是一次又一次重新啓動。我可以通過在NSUserDefaults中存儲一個bool來解決這個問題,以檢查音樂是否正在運行,但這似乎是一個糟糕的解決方法。必須有一個更簡單的解決方案。我嘗試過static
,但那不起作用。背景音樂重新開始
我正在編寫一個在SKScenes之間切換的遊戲。當我從開始屏幕開始播放背景音樂時,切換到新屏幕並返回到開始屏幕,音樂開始再次播放。 我無法找到如何運行音樂一次,而不是一次又一次重新啓動。我可以通過在NSUserDefaults中存儲一個bool來解決這個問題,以檢查音樂是否正在運行,但這似乎是一個糟糕的解決方法。必須有一個更簡單的解決方案。我嘗試過static
,但那不起作用。背景音樂重新開始
創建一個新的空迅速文件,並添加以下代碼到其中:
var backgroundMusicPlayer: AVAudioPlayer!
var musicOnPlayScene = Bool()
func playBackgroundMusic(filename: String) {
let url = NSBundle.mainBundle().URLForResource(filename, withExtension: nil)
if (url == nil) {
print("Could not find file: \(filename)")
return
}
var error: NSError? = nil
do {
backgroundMusicPlayer = try AVAudioPlayer(contentsOfURL: url!)
} catch let error1 as NSError {
error = error1
backgroundMusicPlayer = nil
}
if backgroundMusicPlayer == nil {
print("Could not create audio player: \(error!)")
return
}
backgroundMusicPlayer.numberOfLoops = -1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()
}
現在播放的背景音樂爲開始場景是這樣的:
playBackgroundMusic("yourSong.mp3")
,當你切換場景中添加這代碼到下一個場景中didMoveToView
:
backgroundMusicPlayer.play()
這將恢復您的背景音樂當你切換任何場景。
希望它會有所幫助。