转换场景Swift时,我的AVAudioPlayer停止

时间:2016-08-05 05:19:18

标签: ios swift transition avaudioplayer

好吧,原来我在Spritekit中使用SKAudioNode尝试通过场景继续我的音乐,但是我被重定向到本网站上的另一个人使用AVFoundation。我并不熟悉AVFoundation框架。我想知道的是当我从scene1转换到scene2时如何继续播放音乐?音乐全部设置完毕并使用下面显示的代码。

var Music = AVAudioPlayer()

let myFilePathString = NSBundle.mainBundle().pathForResource("Verm - Explode", ofType: "mp3")

    if let myFilePathString = myFilePathString {
        let myFilePathURL = NSURL(fileURLWithPath: myFilePathString)

        do {

        try Music = AVAudioPlayer(contentsOfURL: myFilePathURL)
        Music.play()

        }catch
        {
            print("Error")
        }
    }

那么在转换场景时如何继续我的歌?提前致谢。山姆。 :P

1 个答案:

答案 0 :(得分:0)

您基本上将代码放入帮助程序类(Singleton或使用静态方法),以便您可以从项目的任何位置访问/播放它。

通过这种方式,您可以集中播放音乐,让您的生活更轻松,无论您处于/转换过的场景如何,都可以播放。

例如Singleton方式(类有1个实例用于app的生命周期)

创建一个新的swift文件并添加一个类似于此的类。

class Music {

     let sharedInstance = Music()

     var music = AVAudioPlayer()

     private init() { } // to make it a proper singleton

     func prepare() {
         // code to prepare your AVAudioPlayers
     }

     // other methods to play, stop etc
  }

现在,您还可以在应用启动时设置所有音频播放器,而不是在播放时也应该有助于提高性能。

在gameViewController或AppDelegate中调用prepare方法

 Music.sharedInstance.prepare()

设置所有玩家。

你可以在正确的位置在你的SKScene中播放它们

 Music.sharedInstance.music.play()

或使用您在音乐助手类中创建的某些方法,例如

 Music.sharedInstance.playGame()

我在github上有一个帮助器,以获得更详细的示例。

https://github.com/crashoverride777/Swift-MusicManager

希望这有帮助