0

我的环境中有四种不同类型的对象(box2d),每种类型的对象都有自己的多个实例,并且希望找到处理添加和操作所有 CCSprite 的最有效方法。精灵都来自不同的文件,所以最好是创建每个精灵并将其添加到数据结构(NSMutableArray)中,还是即使每个 CCSprite 文件不同(对于每种类型的对象),我也会使用 CCSpriteBatchNode?谢谢。

@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
4

1 回答 1

1

好吧,如果您使用不同的纹理,CCSpriteBatchNode 不太可能是您的答案。从这里的 Cocos2D 文档:

CCSpriteBatchNode 就像一个批处理节点:如果它包含子节点,它将在 1 次 OpenGL 调用中绘制它们(通常称为“批处理绘制”)。一个 CCSpriteBatchNode 可以引用一个且仅一个纹理(一个图像文件,一个纹理图集)。

所以就这样了。从表面上看,您会将这些 CCSprite 对象添加到 CCLayer(或其他一些 CCNode 对象),对吗?

无需创建单独的数组来管理子对象——Cocos2D 为您提供了children任何节点的属性。如果是[myLayer addChild:newSprite],您将在children.

这有帮助吗?如果您向我提供有关您的用例的更多想法,我可以扩展我的答案。

于 2011-02-08T01:17:01.607 回答