2011-10-27 10 views
2

私は私の視差バックグラウンドで何度も使用したいスプライト「レンガ」を持っています。 同じスプライトを再利用できる方法はありますか?私は...私のスプライトのためにあまりにも を衝突検出を設定する必要があるので、私はあまりにも多くの変数を使用している場合 は、私はそれは無用だと思います。あなたがCCSpriteの同じインスタンスを再利用することはできません助けcocos2Dで同じスプライトを追加するには?

+0

CCSpriteBatchNodeは、すべての子スプライトを同じ描画呼び出しでレンダリングしますが、画面上に複数のオブジェクトが実際に表示されるように1つのオブジェクトをメモリに入れたいのですか?私はこれが可能であることを知らない。 – Bongeh

答えて

9

ため 感謝。ただし、Cocos2Dが自動的に行うテクスチャを再利用することはできます。

あなたは同じ画像ファイルやスプライトフレームを使用して複数のスプライトを作成することができます。たとえば、これは100個のレンガのスプライトを作成し、0から99までの各固有のタグを与える:

for (int i = 0; i < 100; i++) 
{ 
    CCSprite* brick = [CCSprite spriteWithFile:@"brick.png"]; 
    [self addChild:brick z:0 tag:i]; 
} 

画像ファイル「brick.png」を使用しているすべてのスプライトが同じメモリ内のテクスチャを使用します。各CCSpriteための追加のメモリ使用量が500バイトに近くなるようCCTextureCacheは(私はObjective-Cのランタイムで一度ことを確認)各ロードされたイメージファイルをキャッシュします。つまり、同じテクスチャを使用しているスプライトは、約500 KBにテクスチャが使用するメモリ量を加えた数千のスプライトを使用します。

+0

CCSprite * brick; 私は は、それが(上記の文脈で)が可能です(* .hファイルで)グローバル変数として宣言したいですか? –

関連する問題