질문은이 스레드의 끝 부분처럼 간단합니다.
이름은 같지만 내용이 다른 새 이미지 파일 생성.
파일이 처음부터 생성되었는지 확인하십시오 (iexplorer로 확인하면
새 콘텐츠가 생성됨). CCsprite는 동일한 이름의 첫 번째 생성 된 파일을로드합니다.
CCspriteFrame이 캐시하는지 확실하지 않습니다.
purgeSharedSpriteCache 또는 removeUnusedSpriteFrames가 없으면 제거합니다 (있는 경우)
그래서 나에게 무엇을 선호합니까? 새로운 CCSprite를로드하기 전에 캐시에서 텍스처를 제거하는CCSprite에서로드 된 이미지를 캐시하지 않도록 cocos2d에게 알려주는 방법은 무엇입니까?
{
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
}
}
스프라이트를 생성 한 직후 스프라이트의 텍스처를 캐시에서 제거 할 수도 있습니다. [[CCTextureCache sharedTextureCache] removeTexture : firstSprite.texture]; 일단 스프라이트가 할당 해제되면 메모리에 텍스처를 유지하는 것이 없으며 다시로드하면 새로운 텍스처가 캐시에 추가됩니다. – LearnCocos2D