我使用此提示提示stackoverflow.com/questions/12413460 这是工作。我的问题是当应用程序没有重启或没有重建时图像没有刷新。 我使用方法创建截图。我有什么相同的功能:使用touch scree,截图将保存到文档目录中。用户触摸第二,第二屏幕保存。所以。但是在我的应用程序中,每次只有第一次触摸屏幕截图,因为它是缓存或缓冲编辑。
-(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),但它崩溃了应用程序。
答案 0 :(得分:2)
你是对的,以前的信息正在被缓存。试试
[[CCTextureCache sharedTextureCache] removeTextureForKey:@"image"];
在尝试覆盖之前。
如果您需要同时使用多个图像,请使用差异键名称。