2013-10-03 4 views
-1

현재 SpriteKit을 배우고 있습니다. 주 ViewController에서 배경 음악 플레이어 인스턴스가 있습니다. 그러나 SKScene 클래스에서 다시 액세스하려고 할 때 플레이어를 중지하거나 변경할 수 없습니다.Spritekit이 rootViewController로 돌아갑니다.

ViewController *vc = (ViewController *) self.view.window.rootViewController; 
AVAudioPlayer *player = vc.backgroundMusicPlayer; 
[player stop]; //nothing happened 

나는 아이폰 OS 디바이스에 새로운 오전, SpriteKit 배경 음악 플레이어를 관리하기위한 방법은 무엇입니까? 감사!

답변

3

배경 음악 플레이어 싱글 톤을 사용하는 것이 좋습니다.

BackgroundMusicPlayer.h

@interface BackgroundMusicPlayer : NSObject 

+ (instancetype)sharedPlayer; 

@property (nonatomic, strong) AVAudioPlayer *audioPlayer; 

@end 

BackgroundMusicPlayer.m는

@implementation BackgroundMusicPlayer 

+ (instancetype)sharedPlayer 
{ 
    static BackgroundMusicPlayer *sharedPlayer; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     sharedPlayer = [self new]; 
    }); 
    return sharedPlayer; 
} 

@end 

그럼 당신은 [[BackgroundMusicPlayer sharedPlayer] audioPlayer]를 호출하여 어디서나 오디오 플레이어에 액세스 할 수 있습니다.

+0

나는 이것을 결코 생각하지 못했습니다! 귀하의 신속한 회신 해 주셔서 감사합니다! :) – DazChong

+0

문제 없습니다. 이 표시를 해답으로 표시하십시오.) –

+0

이상하게도 오디오는 ViewController 내에서 속성으로 재생 될 때만 재생됩니다. 어쨌든 그것은 내 코드 어딘가에 오류라고 생각합니다. 나는 당신의 아이디어를 얻었고 또 다시 감사드립니다. – DazChong

관련 문제