Самый эффективный способ справиться с несколькими CCSprites? - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть четыре различных типа объектов в моей среде (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

1 Ответ

1 голос
/ 08 февраля 2011

Ну, CCSpriteBatchNode вряд ли ваш ответ, если вы используете разные текстуры.Из документации Cocos2D здесь :

CCSpriteBatchNode похож на пакетный узел: если он содержит дочерние элементы, он будет рисовать их за один единственный вызов OpenGL (часто известный как «пакетное рисование»)).CCSpriteBatchNode может ссылаться на одну и только одну текстуру (один файл изображения, один текстурный атлас).

Так что это не так.Якобы, вы бы добавили эти объекты CCSprite в CCLayer (или какой-либо другой объект CCNode), верно?

Нет необходимости создавать отдельный массив для управления дочерними объектами - Cocos2D предоставляет вам children свойство любого узла.Если вы [myLayer addChild:newSprite], у вас будет ссылка на него в children.

Помогает ли это?Я могу расширить свой ответ, если вы дадите мне немного больше информации о вашем случае использования.

...