我使用这个问题的提示stackoverflow.com/questions/12413460这是工作。我的问题是图像没有刷新,而应用程序没有重新启动或没有重建。我使用创建屏幕截图的方法。我有同样的功能:使用触摸屏,屏幕截图会保存到文档目录中。用户触摸第二次,第二次保存屏幕截图。所以。但在我的应用程序中,每次只创建第一次触摸屏幕截图,因为它缓存或缓冲。
-(UIImage *) screenshotWithStartNode:(CCNode*)startNode
{
[CCDirector sharedDirector].nextDeltaTimeZero = YES;
CGSize winSize = [CCDirector sharedDirector].winSize;
CCRenderTexture* rtx =
[CCRenderTexture renderTextureWithWidth:winSize.width
height:winSize.height];
[rtx begin];
[startNode visit];
[rtx end];
return [rtx getUIImage];
}
当用户触摸屏(例如)时,我称之为
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CCNode *n = [[[CCDirector sharedDirector] runningScene].children objectAtIndex:0];
UIImage *img = [self screenshotWithStartNode:n];//this image always same by one, same when user touch screen first time
CCSprite *spriteTemp = [CCSprite spriteWithCGImage:img.CGImage key:@"image"];
[self addChild:spriteTemp];
}
屏幕上的项目在时间上有不同的位置。第一次触摸屏幕即可获得正确的图像。但所有其他的触摸创建屏幕截图作为第一个图像,并没有改变。
我想可能是缓冲CCRenderTexture?还是图像缓存?我该怎么办?
我在触摸后尝试了[img release]和CGImageRelease(img.CGImage),但它崩溃了应用程序。
您是对的,前面的信息正在缓存中。尝试
[[CCTextureCache sharedTextureCache] removeTextureForKey:@"image"];
在您尝试覆盖之前。
如果一次需要多个图像,也可以使用差异键名称。