CCSpriteBatchNodeからスプライトテクスチャを変更する

cocos2d-iphone objective-c
CCSpriteBatchNodeからスプライトテクスチャを変更する

SpriteBatchNodeから作成したスプライトのテクスチャを変更しようとしています。

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];

spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"playingCards.pvr.ccz"];
[self addChild:spritesBgNode];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"playingCards.plist"];

使用する例を検索し、見つけました

Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]

[sprite setTexture: texture];

私の質問は次のとおりです。batchNodeファイルから画像を取得する方法を教えてください。 または、別の方法を使用して、playingCards.pvr.cczファイル内の画像への参照を取得しますか。

更新

最初の応答に感謝します。 だから私はあなたが提供したコードスニペットを使用して王のイメージを持つmySpriteを持っています。 しかし、カードの裏面を表示するようにスプライトのテクスチャを変更したいので(上向きまたは下向きに再生できます)、CCSpriteBatchNode内に両方の画像があります。

しかし、「batchNodeから画像を取得できない」と指摘しているように、[[Texture2D alloc] initWithImage:myUIImage]は使用できません

スプライトの画像を上から下に変更します。

ありがとう

  1  0


ベストアンサー

pvr.cczファイル内の画像を画面に表示する場合は、次のコードを追加します。
CCSprite * mySprite = [CCSprite spriteWithSpriteFrameName: @"name of sprite frame"];
[spritesBgNode addChild: mySprite];

基本的に、batchNodeの一部を表示するには、スプライトを追加する必要があります。 スプライトフレームの名前は、FrameCacheに追加した.plistファイルにあります。

batchNodeから画像を取得することはできません。 UIImageは、cocos2dではなく、iPhone APIタイプの画像です。 cocos2dでは、便宜上「initWithImage:(UIImage *)image」が提供されています。

`[[Texture2D alloc] initWithImage:myUIImage]`を使用すると、UIImageを使用してNSDataオブジェクトが作成され、[texture initWithData:data]が内部的に呼び出されます。 画像は後で使用するために保存されません。

更新

この場合、スプライトは「batchNodeのビュー」として機能します。 バッチノードの別の部分を表示するには、スプライトのフレームを変更します。

[mySprite setDisplayFrame:
    [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"back of card"]]];

1


タイトルとURLをコピーしました