我正在编写一个在SKScenes之间切换的游戏。当我从开始屏幕开始播放背景音乐时,切换到新屏幕并返回到开始屏幕,音乐再次开始播放。
我无法找到如何运行音乐一次而不是一次又一次地重启。我可以通过在NSUserDefaults中存储bool来检查音乐是否正在运行,但这似乎是一个糟糕的解决方法。必须有一个更简单的解决方案。我尝试使用static
,但这不起作用。
答案 0 :(得分:0)
创建一个新的空swift文件并将此代码添加到其中:
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()
切换任何场景时,这将恢复您的背景音乐。
希望它会有所帮助。