我在cocos2d中提到了一件奇怪的事情。
在我的游戏场景和菜单场景的初始化中,我将一个frameCache plist和一个spriteSheet加载到缓存中。
我发现如果在我的游戏场景dealloc方法中,我用以下方法清理缓存:
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[[CCTextureCache sharedTextureCache] removeAllTextures];
所以当我将场景替换为菜单并返回游戏时,他不会再次加载缓存,因此会得到他无法找到所需帧的错误。
所以我似乎只能在每个场景中将帧加载到缓存中一次,如果我将其删除并返回场景,它将不会再次加载并获得错误。
反之亦然,如果我清理菜单场景中的缓存,转到游戏并返回菜单,那么菜单场景也不会加载缓存而无法找到我所需的帧。
这很有意思。这是有原因的吗?或者我在某处错了?
非常感谢。
答案 0 :(得分:1)
如果将场景从oldScene更改为newScene,则事件序列如下:
因此,如果在init中加载精灵帧,并清除前场景的dealloc中的缓存,则新场景中的精灵帧将不可用。
您最好的选择是在使用新场景调用replaceScene之前清除缓存。