2016-08-05 4 views
0

원래 Spritekit에서 SKAudioNode를 사용하여 내 음악을 계속 시도했지만이 사이트의 다른 사용자가 AVFoundation을 사용하도록 리디렉션되었습니다. AVFoundation 프레임 워크에 익숙하지는 않습니다. 제가 알고 싶은 것은 scene1에서 scene2로 전환 할 때 음악을 계속 유지하는 것입니다. 음악은 모두 설정되어 있으며 아래 표시된 코드로 작동합니다.내 장면 전환시 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 {아래에 '음악'을 선언했다. 위에 표시된 코드는 var Music = AVAudioPlayer()를 포함하지 않는 DidMoveToView 섹션에 있습니다. – SamCurry

답변

0

기본적으로 코드는 도우미 클래스 (싱글 톤 또는 정적 메서드)로 작성되므로 프로젝트의 어느 곳에서나 액세스/재생할 수 있습니다.

음악 재생을위한 중앙 집중식 장소가있어서 음악을보다 쉽게 ​​즐길 수 있으며 장면 전환에 관계없이 재생됩니다.

예 : 싱글 방법은

새로운 신속한 파일을 만들고이 유사한 클래스를 추가 (클래스는 응용 프로그램의 수명 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() 

의 모든 플레이어를 설정하기 위해 준비를 호출합니다.

그렇게

Music.sharedInstance.music.play() 

처럼 정확한 지점에 귀하의 SKScene에서 그들을 재생하거나 내가 GitHub의에 도우미가 당신은 음악 헬퍼 클래스의 예

Music.sharedInstance.playGame() 

에서 만든 몇 가지 방법을 사용할 수 있습니다보다 더 자세한 예를 보자.

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

희망이

관련 문제