2012-02-22 14 views
0

私はBox2D(およびKobold2D)のcocos2d iOSアプリを持っています。私は1つの層に18のCCスプライトの配列を持っています。これらは、spriteWithSpriteFrameNameとtextureAtlas(あなたにはtexturePackerありがとう)を使用して作成されました。私は18のスプライトを更新したいと思う、私はどちらか)画像を変更することができます(しかし、私はそれを行う方法ではない - 私はsetDisplayFrameへの参照を見たが、私はバッチノード/テクスチャから画像を取得する必要がありますspriteWithSPriteFrameNameを使用しているアトラス)またはb)以前作成したスプライトを破棄してaddChildでレイヤーに追加し、新しいレイヤーを作成します(18スプライト、1回の「ゲーム」で16回)。リソースの使用とパフォーマンスの面では、どの方法が優先されますか? a)のように見えますが、やり直す方法もわかりません。spriteWithSpriteFrameNameを使用してtextureAtlas画像から作成されたスプライトの画像を変更するには

おかげ

答えて

4

あなたはCCSpriteに拡張機能として、次のコードを追加することができます。

-(void) setDisplayFrameNamed:(NSString*)name 
{ 
    [self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name]]; 
} 

あなたはBOX2D使用している場合にも使用することができMonkeyJump Tutorial

+1

私はこれを使用し、うまく動作します –

+0

これを試してください。 AndreasとSteffenに感謝します。 – hangzhouharry

0

に詳細に記載されているGBox2D 理想的な解決策は、スプライトのテクスチャを避けることができればそれを切り替えることではありません。 2番目に良いのは、Spriteframeを使ってテクスチャを変更していることです(これはCCSpriteBatchNodeの使用を排除しています)。

新しいスプライトの作成は、通常、パフォーマンスに最も悪影響を与える操作です。

関連する問題