处理Sprite Kit中的中断 – 无法通过[SKAction playSoundFileNamed:中断后工作 – 获得声音效果

处理Sprite Kit中的中断 – 无法通过[SKAction playSoundFileNamed:中断后工作(如电话)获得声音效果

通过将AVAudioPlayerDelegate添加到我的GameScene.h然后添加到我的GameScene.m,能够在中断后重新启动背景音乐

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player { [_backgroundAudioPlayer pause]; } -(void)audioPlayerEndInterruption:(AVAudioPlayer *)player { [_backgroundAudioPlayer prepareToPlay]; [_backgroundAudioPlayer play]; } 

我试过添加

 [[AVAudioSession sharedInstance] setActive:NO error:nil]; 

AppDelegate和GameScene都在中断开始时和setActive:YES在中断结束时没有运气,声音效果在中断结束后没有声音

从各种讨论来看,这似乎是一个可以偶尔显示出来的错误。 缺点是,如果您遇到这些问题,而且看起来就是这样,那就是跳过SKAction playSoundFileName并纯粹使用AVAudioPlayer。

你必须:

  1. 仅对您的所有音频使用AVAudioPlayer,因为它经过设计和测试可以处理中断。
  2. 使用NSData作为与AVAudioPlayer一起使用的声音容器
  3. 每个声音都应该有自己的临时AVAudioPlayer实例,仅用于声音生命周期。

有关如何在http://iknowsomething.com/ios-sdk-spritekit-sound/上执行此操作的详细说明