Cocos2D addChild поведение - PullRequest
       12

Cocos2D addChild поведение

0 голосов
/ 07 сентября 2011

Я запутался с поведением 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 мне кажется странным!

Спасибо!

1 Ответ

0 голосов
/ 08 сентября 2011

Спасибо за комментарии, но я разобрался.

Когда я вызываю статический [Ball ballInWorld:], CCSprite сохраняется не в классе Ball, а только внутри CCSpriteBatchNode, поэтому мне приходится использовать addChild: ball или использовать [[Ball alloc] init ...] для сохранить ссылку на спрайт.

GameScene - это CCLayer, я думаю, что все в порядке, чтобы использовать его как синглтон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...