2012-10-30 112 views

回答

2

如果你是在init方法使用cocos2d 2.x,將精靈渲染爲CCRenderTexture並調用該渲染紋理的getUIImage方法。

6

在你的情況下,只需添加下一個methood到類:

- (UIImage *) imageFromSprite :(CCSprite *)sprite 
{ 
    int tx = sprite.contentSize.width; 
    int ty = sprite.contentSize.height; 

    CCRenderTexture *renderer = [CCRenderTexture renderTextureWithWidth:tx height:ty]; 

    sprite.anchorPoint = CGPointZero; 

    [renderer begin]; 
    [sprite visit]; 
    [renderer end]; 

    return [renderer getUIImage]; 
} 

如何使用:

CCSprite *sprite = (CCSprite *)node; 
UIImage *p = [self imageFromSprite:sprite] 
+0

不知道我在做什麼錯,但使用這種圖像得到相當錯誤的。 – Jonny

+1

您在渲染之前更改了anchorPoint。之後需要將其改回原始值。 – Jonny

4

呃......

我認爲這是方式更好。將此添加爲CCNode上的類別。

-(UIImage*)image { 
    CCRenderTexture* renderer = [CCRenderTexture renderTextureWithWidth:self.contentSize.width height:self.contentSize.height]; 

    const CGPoint ANCHORBEFORE = self.anchorPoint; 
    self.anchorPoint = CGPointZero; 

    [renderer begin]; 
    [self visit]; 
    [renderer end]; 
    self.anchorPoint = ANCHORBEFORE; 

    return [renderer getUIImage]; 
}