iOs(cocos2d)截图缓存还是CCRenderTexture缓冲区?它没有改变

时间:2012-09-15 16:34:03

标签: iphone ios cocos2d-iphone

我使用此提示提示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),但它崩溃了应用程序。

1 个答案:

答案 0 :(得分:2)

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

[[CCTextureCache sharedTextureCache] removeTextureForKey:@"image"];
在尝试覆盖之前

如果您需要同时使用多个图像,请使用差异键名称。