2015-10-12 92 views
-1

我正在編寫一個在SKScenes之間切換的遊戲。當我從開始屏幕開始播放背景音樂時,切換到新屏幕並返回到開始屏幕,音樂開始再次播放。 我無法找到如何運行音樂一次,而不是一次又一次重新啓動。我可以通過在NSUserDefaults中存儲一個bool來解決這個問題,以檢查音樂是否正在運行,但這似乎是一個糟糕的解決方法。必須有一個更簡單的解決方案。我嘗試過static,但那不起作用。背景音樂重新開始

回答

0

創建一個新的空迅速文件,並添加以下代碼到其中:

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

這將恢復您的背景音樂當你切換任何場景。

希望它會有所幫助。