1

スプライト シートがどのように機能するかを理解しようとしています。私はチュートリアルでこのコードを見つけました:

CCSpriteBatchNode *backgroundBgNode;
    backgroundBgNode = [CCSpriteBatchNode batchNodeWithFile:@"background.pvr.ccz"];
    [self addChild:backgroundBgNode];
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"background.plist"];
    CCSprite *background = [CCSprite spriteWithSpriteFrameName:@"MuleDeer-ipadhd.png"];
    background.anchorPoint = ccp(0,0);
    [backgroundBgNode addChild:background];

基本的にこのコードは明確ですが、複数のスプライト シート (pvr.czz ファイル) があり、すべてのスプライト シートに数百の異なるスプライトがあるとします。前のコードで示唆されているように、すべてのスプライトを対応する CCSpriteBatchNode に子として追加する必要があります。基本的に問題は、スプライト シートを生成するために使用するツールが、すべてのスプライトが 1 つのスプライト シートに収まらない場合、異なるスプライト シートにほぼランダムに収まることです。私が持っているのはすべてのファイル (スプライト) のリストであり、それらがどのスプライトシートに属しているか正確にはわかりません。コードから正しい CCSpriteBatchNode を取得し、生成するスプライトを追加する方法はありますか?

4

1 に答える 1

0

バッチ ノードを使用するための規則は、バッチ ノードが初期化されたテクスチャを使用して、1 つのみのスプライトを作成できるということです。あなたが言うように、例はうまくいくはずですが、私があなたを正しく理解していれば、より多くのスプライトシートを操作するとどうなるのだろうか? この場合、すでに行ったことを単純に複製します。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"myTexture1.plist"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"myTexture2.plist"];

CCSpriteBatchNode *b = [CCSpriteBatchNode batchNodeWithFile:@"myTexture1.pvr.ccz"];
CCSpriteBatchNode *b1 = [CCSpriteBatchNode batchNodeWithFile:@"myTexture2.png"];

[self addChild:b];
[self addChild:b1];    

CCSprite *s = [CCSprite spriteWithSpriteFrameName:@"happySprite1.png"];
[b addChild:s];
CCSprite *s1 = [CCSprite spriteWithSpriteFrameName:@"happySprite2.png"];
[b addChild:s1];

CCSprite *s2 = [CCSprite spriteWithSpriteFrameName:@"slowSprite1.png"];
[b1 addChild:s2];
CCSprite *s3 = [CCSprite spriteWithSpriteFrameName:@"slowSprite2.png"];
[b1 addChild:s3];

このコードは、いくつかの機能に適していますが、うまくいけばアイデアが得られますか? まだ不明な場合はお知らせください。

于 2013-11-05T22:34:53.550 に答える