iOs (cocos2d) 屏幕截图缓存还是 CCRenderTexture 缓冲区?它不会改变



我使用这个问题的提示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"];

在您尝试覆盖之前。

如果一次需要多个图像,也可以使用差异键名称。

最新更新