正如標題,我曾提到下面如何將CCSprite圖像轉換爲UIImage?
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
代碼我怎樣才能得到精靈一個UIImage * P?
正如標題,我曾提到下面如何將CCSprite圖像轉換爲UIImage?
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
代碼我怎樣才能得到精靈一個UIImage * P?
通過查看CCSprite和CCTexture2D的源代碼,您可以看到圖像僅用於創建紋理數據,並且圖像對象不會保留但暫時使用。
CCTexture2D來源:
http://code.google.com/p/cocos2d-iphone/source/browse/trunk/cocos2d/CCTexture2D.m?r=1882
CCSprite來源:
http://code.google.com/p/cocos2d-iphone/source/browse/trunk/cocos2d/CCSprite.m?r=1747
看看在使用CGImageRef
如果你是在init方法使用cocos2d 2.x,將精靈渲染爲CCRenderTexture並調用該渲染紋理的getUIImage方法。
在你的情況下,只需添加下一個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]
呃......
我認爲這是方式更好。將此添加爲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];
}
不知道我在做什麼錯,但使用這種圖像得到相當錯誤的。 – Jonny
您在渲染之前更改了anchorPoint。之後需要將其改回原始值。 – Jonny