タイトルとして、私は以下のコードを言及しました
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
スプライトから UIImage *p を取得するにはどうすればよいですか?
タイトルとして、私は以下のコードを言及しました
CCSprite *sprite = (CCSprite *)node;
CCTexture2D *texture2d = [sprite texture];
スプライトから UIImage *p を取得するにはどうすればよいですか?
あなたの場合、次のメソッドをクラスに追加するだけです:
- (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];
}
cocos2d 2.x を使用している場合は、スプライトを CCRenderTexture にレンダリングし、そのレンダリング テクスチャの getUIImage メソッドを呼び出します。
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メソッドを調べます