2015-10-12 56 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() 

这将恢复您的背景音乐当你切换任何场景。

希望它会有所帮助。