2014-04-24 12 views
3

SKAction으로 배경 음악을 반복하고 싶지만 다른 장면으로 이동하면 음악이 한 행 후에 멈 춥니 다. 루프를 시작하고 다른 장면에서 계속 재생할 수있는 방법이 있습니까? 지금 코드는 MyScene의 init 메소드에 배치됩니다. 더 좋은 장소가 있습니까? 아마도 didFinishLaunchingWithOptions입니까? 여기루프 뮤직 SKAction

내가 무엇을 시도했다입니다 :

if (delegate.musicOn == YES && delegate.musicIsPlaying == NO) { 

    SKAction *playMusic = [SKAction playSoundFileNamed:@"loop.wav" waitForCompletion:YES]; 
    SKAction *loopMusic = [SKAction repeatActionForever:playMusic]; 
    [self runAction:loopMusic]; 

    delegate.musicIsPlaying = YES; 


} 
+0

사운드 작업이 더 나은 오디오 컨트롤, 빠른 편리한 해킹보다는 더 이상 없다 당신은 내가 '개인적으로 AVAudioPlayer 사용하는 가정이나된다 OpenAL과 AVAudio 모두에 대한 래퍼, 즉 ObjectAL을 권장합니다. – LearnCocos2D

답변

4

당신은 SKAction의 사용과 장면을 통해 배경 음악을 재생할 수 없습니다. 대신 AVAudioPlayer를 사용

아이폰 OS에서
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"]; 
NSError *error; 
AVAudioPlayer *gameSceneLoop = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath] error:&error]; 
if (error) { 
    NSLog(@"Error in audioPlayer: %@", [error localizedDescription]); 
} else { 
    gameSceneLoop.numberOfLoops = -1; 
    [gameSceneLoop prepareToPlay]; 
    [gameSceneLoop play]; 
} 
4

9 사용 SKAudioNode을 위해 :

let backgroundMusic = SKAudioNode(fileNamed: "music.wav") 
self.addChild(backgroundMusic)