问题很简单,因为它是该主题的提示。
生成具有相同名称但内容不同的新图像文件。
我确定该文件是从头开始生成的。(通过iexplorer进行检查,可以看到
生成了具有新内容的新图像),但是CCsprite以某种方式加载了第一个具有相同名称的文件。
不知道CCspriteFrame是否缓存它。
purgeSharedSpriteCache或removeUnusedSpriteFrames不会将其删除(如果已删除),
那么您对我来说是什么呢?
{
NSArray *docs=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath=[docs objectAtIndex:0];
NSString *fn=[docPath stringByAppendingPathComponent:@"tmp.png"];
if([[NSFileManager defaultManager]fileExistsAtPath:fn])
{
//[CCSpriteFrameCache purgeSharedSpriteFrameCache];
//[[CCSpriteFrameCache sharedSpriteFrameCache]removeUnusedSpriteFrames];
//[[CCSpriteFrameCache sharedSpriteFrameCache]removeSpriteFrames];
CCSprite *firstSprite=[CCSprite spriteWithFile:fn];
[self regenerateNewTmpPng];//this deletes old tmp.png and generates imagefile with same name but different content
CCSprite *secondSprite=[CCSprite spriteWithFile:fn];//this loads same content as squareSprite
}
}
您使用的CCSprite ctor会先检查缓存中的纹理。如果在缓存中找到它,它将返回一个新的带有缓存对象的ccsprite。如果不是,则将其(静默地)放入高速缓存中,并返回带有新高速缓存纹理的ccsprite。
如果需要,可以先从缓存中删除纹理
CCSprite *firstSprite=[CCSprite spriteWithFile:fn];
[self regenerateNewTmpPng];
[[CCTextureCache sharedTextureCache] removeTextureWithKey:@"tmp.png"];
CCSprite *secondSprite=[CCSprite spriteWithFile:fn];
引用。cocos2d 2.0,未经测试,但可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句