我使用这个问题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),但它会使应用程序崩溃。