基本上我是在XCode 5中使用Obj-C在Sprite Kit上制作游戏 每当我点击屏幕时,我都会使用SKAction播放声音文件
[self runAction:[SKAction playSoundFileNamed:@"tap.caf" waitForCompletion:NO]];
之前我使用的mp3文件具有相同的声音,并且错误在至少50次以上后仍然随机弹出,有时甚至更少,有时甚至不会导致错误,
所以我读了苹果文档并决定转换为ima4 .caf扩展名。 我不确定它是否有所作为,它的发生频率要低得多。我还有两个通过SKActions播放的音频文件,但没有一个音频文件加载失败。
有什么建议吗?
下面的调试控制台输出:
2014-07-05 16:14:15.716 GoUp[777:60b] *** Terminating app due to uncaught exception
'Failed to Load Resource', reason: 'Resource tap.caf can not be loaded'
*** First throw call stack:
(0x306d7fd3 0x3ae86ccf 0x306d7f15 0x32e09e55 0x32dc2b2d 0xf9331 0x32de69ab 0x32f28651
0x32f236eb 0x32ef88ed 0x32ef6f97 0x306a325b 0x306a272b 0x306a0f1f 0x3060bf0f 0x3060bcf3
0x35510663 0x32f5716d 0xfcd61 0x3b393ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
只是添加,我尝试通过设置repeatforever waitforcomplete来检查文件是否有问题:YES SKAction播放声音文件,(我确实每次都等待它完成,否则它可能因为大量的数据而崩溃)动作)。它运行没有问题至少5分钟,直到我决定停止应用程序。不确定这是否确认文件没有损坏
编辑2:刚试了一个不同的声音文件,它又发生了一个不同的文件:(
答案 0 :(得分:0)
我没有解释为什么"崩溃"发生时,
但是,您可以轻松解决此问题,方法是将声音声明并加载到现金(以避免每次播放声音时加载),如下所示:< / p>
在.h
@property (strong, nonatomic) SKAction *aSound;
在.m中的点亮顶部:
self.aSound = [SKAction playSoundFileNamed:@"FileName.wav" waitForCompletion:NO];
然后每次要播放声音时调用它:
[self runAction:_aSound];
也出于某些原因, 我建议您将所有Audios文件转换为.Wav ,这是未压缩的(从处理器获得更快的速度,之前没有解压缩文件) 它还避免了从Xcode的断点中拾取的C中的许多异常。