2

タイトルとして、私は以下のコードを言及しました

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

スプライトから 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 を使用している場合は、スプライトを 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 に答える