我用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'
我不知道为什么,因为声音可以在错误之前正确播放。
其他声音也会出现同样的错误,但总是在一段时间后发生。
有什么想法吗?
答案 0 :(得分:0)
您应该尝试预加载声音,并在控制器中保留对动作的引用。
@property (strong, nonatomic) SKAction *playMySound;
并初始化它:
self.playMySound = [SKAction playSoundFileNamed:@"beep.mp3" waitForCompletion:NO];
并使用它:
[self runAction:playMySound]
您将保留对该操作的引用,并且每次您希望播放声音时都会避免重新加载文件。