精灵套件 - 在更改场景时继续播放音频

时间:2014-02-28 22:41:12

标签: ios avfoundation sprite-kit

我使用此代码循环播放音频文件:

// *** In your interface... ***
#import <AVFoundation/AVFoundation.h>

...

AVAudioPlayer *testAudioPlayer;

// *** Implementation... ***

// Load the audio data
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample_name" ofType:@"wav"];
NSData *sampleData = [[NSData alloc] initWithContentsOfFile:soundFilePath];
NSError *audioError = nil;

// Set up the audio player
testAudioPlayer = [[AVAudioPlayer alloc] initWithData:sampleData error:&audioError];

if(audioError != nil) {
    NSLog(@"An audio error occurred: \"%@\"", audioError);
}
else {
    [testAudioPlayer setNumberOfLoops: -1];
    [testAudioPlayer play];
}

但是当场景改变时,音频停止。在所有场景中有没有办法让它在后台播放?

3 个答案:

答案 0 :(得分:3)

你将音频播放器设置在SKScene以上的水平,我通过让UIViewController播放音乐在我的一个Sprite Kit应用程序中做到这一点,然后当我交换SKScenes时,音乐继续播放。

答案 1 :(得分:2)

转到您的主要SKScene并添加:

[self runAction:[SKAction playSoundFileNamed:@"YourFileName.extension" waitForCompletion:NO]];

即使你过渡场景,它也会一直播放。

和平。

答案 2 :(得分:0)

添加到此。这里是@ user3504848 PUSH CX ;saving the state of the counter as it will be modified in the displayNum call displayNum ;display the n'th term (current term) POP CX ;restoring state of the counter 的SpriteKit Swift 3.0版本