2016-08-05 3 views
0

Итак, изначально я использовал SKAudioNode в Spritekit, чтобы попытаться продолжить мою музыку через сцены, однако я получил перенаправление на использование AVFoundation другим человеком на этом сайте. Я не так хорошо знаком с инфраструктурой AVFoundation. Все, что я хочу знать, это продолжение музыки, когда я перехожу из сцены1 в сцену2? Музыка настроена и работает с приведенным ниже кодом.My AVAudioPlayer останавливается при переходе сцен Swift

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

+0

Является 'Music' Ивар вашего приложения (в отличие от точки зрения)? –

+0

Я объявил «Музыка» под моим классом GameScene: SKScene {. Код, показанный выше, находится в разделе DidMoveToView, не включая var Music = AVAudioPlayer(). – SamCurry

ответ

0

Вы в основном помещаете свой код в класс-помощник (Singleton или со статическими методами), чтобы вы могли получать/воспроизводить его из любого места вашего проекта.

Таким образом, у вас есть централизованное место для воспроизведения музыки, что облегчает вашу жизнь, и оно будет воспроизводиться независимо от того, в какую сцену вы находитесь.

Singleton например способ (класс имеет 1 экземпляр для жизни приложения)

Создать новый быстрый файл и добавить класс, похожий на этот.

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 вы вызываете метод подготовки

Music.sharedInstance.prepare() 

настроить все игроки.

Чем вы можете играть их в SKScene в правильном месте, как так

Music.sharedInstance.music.play() 

или использовать некоторые методы, которые вы создали в классе Музыка хелперов, например

Music.sharedInstance.playGame() 

У меня есть помощник на GitHub для более подробного примера.

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

Надеется, что это помогает

Смежные вопросы