我的环境中有四种不同类型的对象(box2d),每种类型的对象都有自己的多个实例,并希望找到最有效的方法来处理添加和操作所有CCSprites。精灵都来自不同的文件,所以最好创建每个精灵并将其添加到数据结构(NSMutableArray),或者我会使用CCSpriteBatchNode,即使每个CCSprite文件不同(对于每种类型的对象)?感谢。
@interface LevelScene : CCLayer
{
b2World* world;
GLESDebugDraw *m_debugDraw;
CCSpriteBatchNode *ballBatch;
CCSpriteBatchNode *blockBatch;
CCSpriteBatchNode *springBatch;
CCSprite *goal;
}
+(id) scene;
// adds a new sprite at a given coordinate
-(void) addNewBallWithCoords:(CGPoint)p;
// loads the objects (blocks, springs, and the goal), returns the Level Object
-(Level) loadLevel:(int)level;
@end
答案 0 :(得分:1)
好吧,如果您使用不同的纹理,CCSpriteBatchNode可能不是您的答案。来自Cocos2D文档here:
CCSpriteBatchNode就像一个批处理 node:如果它包含子节点,它会 在1个单一的OpenGL调用中绘制它们 (通常称为“批量抽奖”)。一个 CCSpriteBatchNode可以引用一个 并且只有一个纹理(一个图像文件, 一个纹理图集。
所以那就是了。表面上看,你要将这些CCSprite对象添加到CCLayer(或其他一些CCNode对象),对吗?
无需为管理子对象创建单独的数组 - Cocos2D为您提供任何节点的children
属性。如果您[myLayer addChild:newSprite]
,则会在children
中对其进行引用。
这有帮助吗?如果你让我对你的用例有更多的了解,我可以扩展我的答案。