我正在使用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 的引用,并且避免每次您要播放声音时都重新加载文件。