-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()
这将恢复您的背景音乐当你切换任何场景。
希望它会有所帮助。