2

作为标题,我已经提到了下面的代码

CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];

如何从 sprite 获取 UIImage *p?

4

4 回答 4

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]
于 2013-02-18T08:59:38.473 回答
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];
}
于 2013-06-05T01:13:08.320 回答
2

如果您使用的是 cocos2d 2.x,则将 sprite 渲染到 CCRenderTexture 并调用该渲染纹理的 getUIImage 方法。

于 2012-10-30T15:12:41.927 回答
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 方法

于 2012-10-30T09:53:36.277 回答