1

Cocos2d v0.99には、CCSpriteFrameCacheという名前のクラスがあります。すべてのスプライトフレームをロードできます

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"images.plist"];

そして、それらのロードされたフレームを使用できます

CCSprite *sprite=[CCSprite spriteWithSpriteFrameName:@"img01.png"];

ここで私の質問は、アニメーションに使用するすべての画像を保持する大きなスプライトシートを作成するかどうかです。つまり、さまざまなアニメーションオブジェクト用にいくつかのスプライトシートがあると思いました。この質問に「いいえ」と答えた場合、各スプライトを異なる方法でロードするため、2番目の質問は、特定のスプライトシートのフレームをどのように参照するかです。

4

2 に答える 2

4

ここで私の質問は、アニメーションに使用するすべての画像を保持する大きなスプライトシートを作成するかどうかです。

はい、または多くの異なるフレーム画像がある場合は、複数のスプライトシートを持つことができます...

つまり、さまざまなアニメーションオブジェクト用にいくつかのスプライトシートがあると思いました。

結果のスプライトシートのサイズによって異なります。原則として、同じアニメーションの異なるフレームを同じシート内に整理すると便利ですが、フレームが600x600などを占める場合、スプライトシートは1024x1024シートと同じメモリを占めるため、さらに追加することをお勧めします。別のアニメーションに記録されている場合でも、同じシートにフレームを配置します。一般に、両方の次元が2の累乗である限り、シートサイズで遊ぶことができます。メモリの占有に関して非効率になることはなく、必要に応じてフレームを異なるシートに編成できます。

この質問に「いいえ」と答えた場合、各スプライトを異なる方法でロードするため、2番目の質問は、特定のスプライトシートのフレームをどのように参照するかです。

スプライトシートに構成された元のファイル名によって..

それが役に立てば幸い...

于 2012-10-19T19:23:07.900 に答える
3

可能であれば、できるだけ多くの画像をできるだけ少ないテクスチャアトラスに詰め込みます。決定要因は、多くの場合z順序です。2つのアトラスと2つのスプライトバッチノードがある場合、各スプライトバッチノードはzオーダーでのみスプライトをレンダリングできますが、他のバッチノードのスプライトは常に前または後ろにあります。

スプライトフレームがどのテクスチャアトラス(スプライトシート)から来たのかを知る必要はありません。名前で参照するだけです。フレームがどのテクスチャを参照しているかを知る必要がある場合は、スプライトフレームのテクスチャプロパティを確認し、スプライトバッチノードのテクスチャプロパティと比較してください。

于 2012-10-19T19:53:19.697 に答える