我正在使用Sprite Kit(Objective-C)为iPad开发游戏。

我经常使用以下代码(例如):

[self runAction:[SKAction playSoundFileNamed:@"beep.wav" waitForCompletion:YES]];

一切顺利,直到一段时间后我的应用程序崩溃,突然出现以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Resource beep.wav can not be loaded'

我不知道为什么,因为声音可以在错误发生之前正确播放。

其他声音也可能发生相同的错误,但总是会在一段时间后出现。

有任何想法吗 ?

最佳答案

您应该尝试预加载声音,并在 Controller 中保留对 Action 的引用。
@property (strong, nonatomic) SKAction *playMySound;
并初始化它:
self.playMySound = [SKAction playSoundFileNamed:@"beep.mp3" waitForCompletion:NO];
并使用它:
[self runAction:playMySound]
您将保留对该 Action 的引用,并且避免每次您要播放声音时都重新加载文件。

10-08 03:17