Я запутался с поведением addChild: в Cocos2D из-за следующего:
У меня есть подкласс CCNode, которому принадлежит CCSprite и Box2DBody.
Я метод -init этого подкласса, я добавляю спрайт в CCSpriteBatchNode основного GameScene, например:
//Ball class, CCNode subclass with a CCSprite and a b2Body
-(id)initBallInWorld:(b2World *)word spriteFile:(NSString *)file
{
//self = [super init] blablabla
CCSpriteBatchNode *batch = [GameScene getSpriteBatch]; //singleton
//create Box2dBody inside the world
//create a CCSprite
[batch addChild:sprite]; //Here is the confusion!
}
В основной игровой сцене я делаю:
Ball * ball = [Шар ballInWorld ...]
Если я делаю [self addChild: ball], физика работает, как и ожидалось, но если я не делаю, ballSprite застревает в (0, 0) ... почему это так? Пакет уже добавлен в GameScene, а ballSprite уже добавлен в пакет, этот дополнительный addChild мне кажется странным!
Спасибо!