CCSpriteFrameCache を使用して、このようなフレームを追加するとします。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"atlas.plist"];
mySpriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"atlas.png"];
CCSprite *oneSprite = [CCSprite spriteWithSpriteFrameName:@"abc"]; //yes I do not use extensions, who need them?
[mySpriteSheet addChild:oneSprite];
これは素晴らしく機能します。ドロー コールを増やさずに mySpriteSheet に多くのスプライトを追加できますが、これらのスプライトを CCMenuItem 内で使用したいとします。この場合、CCMenuItem のサブクラスである CCMenuItemSprite を次のように使用します。
CCSprite *spriteNormal = [CCSprite spriteWithSpriteFrameName:imagemNormal];
CCSprite *spriteHighlight = [CCSprite spriteWithSpriteFrameName:imagemHighlight];
CCMenuItemSprite *myItem = [CCMenuItemSprite itemWithNormalSprite:spriteNormal
selectedSprite:spriteHighlight
target:target
selector:@selector(doSomething)];
その後、アイテムは CCmenu 内に移動します
CCMenu *menu = [CCMenu menuWithItems:myItem, nil];
では、ここで質問です。私が行った場合
[self addChild:menu];
バッチノードからのスプライトでさえ、ドローコールが増加し、私にはできません
[mySpriteSheet addChild:menu];
潰れるから。
それ、どうやったら出来るの?