2014-07-05 38 views
1

基本上林XCode中5 制作使用的OBJ-C上雪碧套件游戏,每当我点击屏幕,我使用SKAction播放声音文件应用程序崩溃是由于资源不能正常加载随机

[self runAction:[SKAction playSoundFileNamed:@"tap.caf" waitForCompletion:NO]]; 

之前我用过的mp3文件的声音相同,错误在大约50次以上后随机弹出,有时甚至更少,有时甚至不会导致错误,所以我阅读苹果文档,并决定将其转换为ima4 .caf扩展。 我不确定它是否有所作为,发生的次数少得多。我还有2个音乐文件通过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错误:是SKAction播放声音文件,(我没有等待它完成否则每次都可能由于大量操作而崩溃)。它跑了至少5分钟没有问题,直到我决定停止应用程序。不知道这是否确认文件没有被损坏

编辑2:只是尝试了不同的声音文件,并用不同的文件:(

+0

NVM,我想我已经通过为每个声音设置一个SKAction并调用指向动作的指针来修复它,显然,文件不必每次都以这种方式加载。多次尝试后仍然没有错误。 – lbpman1

回答

0

我不知道为什么会“撞车”时,

解释再次发生

但是,你可以很容易地解决通过声明并加载你的声音变成现金这个问题(避免各播放声音时加载它)如下:

在.H

@property (strong, nonatomic) SKAction *aSound; 
在.M

IGNIT它的顶部:

self.aSound = [SKAction playSoundFileNamed:@"FileName.wav" waitForCompletion:NO]; 

恩然后调用它,你要播放的声音每次:

[self runAction:_aSound]; 

也和某些原因, 我建议你到将所有的音频文件转换成.Wav,这是未压缩的(允许处理器在读取之前没有解压缩该文件的速度更快) 它还避免了从Xcode的Breakpoint拾取的大量异常。

相关问题