作为标题,我已经提到了下面的代码
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
如何从精灵获得UIImage * p?
答案 0 :(得分:6)
在您的情况下,只需在您的班级中添加下一个方法:
- (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]
答案 1 :(得分:4)
... UHH
我认为这是一个更好的方式。在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];
}
答案 2 :(得分:2)
如果您使用的是cocos2d 2.x,请将精灵渲染到CCRenderTexture中,并调用该渲染纹理的getUIImage方法。
答案 3 :(得分:0)
通过查看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方法