1

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

4

1 回答 1

2

你是对的,之前的信息正在被缓存。试一试

[[CCTextureCache sharedTextureCache] removeTextureForKey:@"image"];

在您尝试覆盖之前。

或者,如果您一次需要多个图像,请使用不同的键名。

于 2012-09-17T06:49:58.470 回答