2014-04-24 98 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或個人而言,我」 d建議使用OpenAL和AVAudio的包裝,即ObjectAL。 – LearnCocos2D

回答

4

無法播放背景音樂在場景中使用SKAction秒。使用AVAudioPlayer代替:

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

在iOS系統9使用SKAudioNode爲:

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