假设我正在使用 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 中使用这些精灵,或者在这种情况下,CCMenuItemSprite 是 CCMenuItem 的子类,如下所示:
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];
因为它会崩溃。
我怎么做?