2014-04-24 106 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)