Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 精灵套件-更改场景时保持播放音频_Ios_Avfoundation_Sprite Kit - Fatal编程技术网

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…你是救命恩人。谢谢