背景音乐重新启动

时间:2015-10-12 05:19:40

标签: ios swift avfoundation

我正在编写一个在SKScenes之间切换的游戏。当我从开始屏幕开始播放背景音乐时,切换到新屏幕并返回到开始屏幕,音乐再次开始播放。 我无法找到如何运行音乐一次而不是一次又一次地重启。我可以通过在NSUserDefaults中存储bool来检查音乐是否正在运行,但这似乎是一个糟糕的解决方法。必须有一个更简单的解决方案。我尝试使用static,但这不起作用。

1 个答案:

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

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

希望它会有所帮助。