次の理由により、Cocos2DでのaddChild:の動作と混同しています。
CCSpriteとBox2DBodyを所有するCCNodeサブクラスがあります。このサブクラスの-initメソッドでは、次のように、メインのGameSceneのCCSpriteBatchNodeにスプライトを追加します。
//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!
}
メインのGameSceneでは、次のようにします。Ball * ball = [Ball ballInWorld ...]
[self addChild:ball]を実行すると、物理演算は期待どおりに機能しますが、そうでない場合、ballSpriteは(0、0)でスタックします。これはなぜですか。バッチはすでにGameSceneに追加されており、ballSpriteはすでにバッチに追加されています。この余分なaddChildは、私には奇妙に思えます。
ありがとう!