Ios 精灵套件-更改场景时保持播放音频
我使用以下代码循环音频文件:Ios 精灵套件-更改场景时保持播放音频,ios,avfoundation,sprite-kit,Ios,Avfoundation,Sprite Kit,我使用以下代码循环音频文件: // *** In your interface... *** #import <AVFoundation/AVFoundation.h> ... AVAudioPlayer *testAudioPlayer; // *** Implementation... *** // Load the audio data NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"
// *** 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];
}
/***在您的界面中***
#进口
...
AVAudioPlayer*testAudioPlayer;
//***实施***
//加载音频数据
NSString*soundFilePath=[[NSBundle mainBundle]pathForResource:@“sample_name”类型:@“wav”];
NSData*sampleData=[[NSData alloc]initWithContentsOfFile:soundFilePath];
N错误*音频错误=零;
//设置音频播放器
testAudioPlayer=[[AVAudioPlayer alloc]initWithData:sampleData错误:&audioError];
if(audioError!=nil){
NSLog(@“发生音频错误:\“%@\”,音频错误);
}
否则{
[TestAudioLayer setNumberOfLoops:-1];
[testAudioPlayer play];
}
但当场景改变时,音频停止。有没有办法让它在所有场景中都在后台播放?您将把音频播放器设置为高于SKScene的级别,我在我的一个精灵工具包应用程序中通过让UIViewController播放音乐来做到这一点,然后当我交换SKScenes时,音乐继续播放。转到您的主SKScene并添加以下内容:
[self runAction:[SKAction playSoundFileNamed:@"YourFileName.extension" waitForCompletion:NO]];
它将永远播放,即使在你转换场景时也是如此
和平。来补充这一点。以下是@user3504848
self.run的SpriteKit Swift 3.0版本(SKAction.playSoundFileNamed(“YourFileName.extension”,waitForCompletion:false))
这取决于负责运行相关音频剪辑的人员。UIViewController或SKScene…你是救命恩人。谢谢