Cocos2d iphone 如何将CCSprite图像转换为UIImage?
作为标题,我提到了下面的代码Cocos2d iphone 如何将CCSprite图像转换为UIImage?,cocos2d-iphone,uiimage,ccsprite,Cocos2d Iphone,Uiimage,Ccsprite,作为标题,我提到了下面的代码 CCSprite *sprite = (CCSprite *)node; CCTexture2D *texture2d = [sprite texture]; 如何从sprite获取UIImage*p?通过查看CCSprite和CCTexture2D的源代码,您可以看到该图像仅用于创建纹理数据,而图像对象不是保留的,而是临时使用的 CCTexture2D来源: CCSprite来源: 如果您使用的是CoCoS2D2.x,请查看使用CGImageRef的init
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
如何从sprite获取UIImage*p?通过查看CCSprite和CCTexture2D的源代码,您可以看到该图像仅用于创建纹理数据,而图像对象不是保留的,而是临时使用的 CCTexture2D来源: CCSprite来源:
如果您使用的是CoCoS2D2.x,请查看使用CGImageRef的init方法,将sprite渲染到CCRenderTexture并调用该渲染纹理的getUIImage方法。在您的情况下,只需将下一种方法添加到类中:
- (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];
}
不确定我做错了什么,但使用此选项图像会非常错位。在渲染之前,您正在更改主播点。以后需要将其更改回原始值。