0

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

ありがとう

4

2 に答える 2

4

次のコードを拡張機能として CCSprite に追加できます。

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

box2d を使用している場合は、 MonkeyJump チュートリアル で詳しく説明されているGBox2Dを使用することもできます。

于 2012-02-22T06:56:51.323 に答える
0

理想的な解決策は、回避できる場合はスプライトのテクスチャをまったく切り替えないことです。2 番目に良いのは、Spriteframe を介してテクスチャを変更することです (これにより、CCSpriteBatchNode の使用が除外されることに注意してください)。

通常、新しいスプライトの作成は、パフォーマンスへの悪影響が最も大きい操作です。

于 2012-02-22T08:56:20.290 に答える