2013-08-18 53 views
1

我有一个继承自CCNode的类。我想重写将此类添加到父项。Cocos2d - 覆盖儿童的addChild

因此,如果ClassA继承CCNode,我将它添加为这样[self addChild:ClassA];。 ClassA包含3个精灵,我希望添加ClassA时添加3个精灵。有没有办法做到这一点?

我看着addChild并认为这对孩子要求的setParent,所以在我的ClassA覆盖到的setParent做到这一点:

- (void) setParent:(CCNode *)parent { 
    [super setParent:parent]; 
    [parent addChild:_sprite1 z:kZClassA]; 
    [parent addChild:_sprite2 z:kZClassA]; 
    [parent addChild:_sprite3 z:kZClassA]; 
} 

似乎有点哈克给我吗?有没有更好的方法来做到这一点?

回答

1

此任务不需要重写addChild。 您只需要在ClassA中创建精灵时添加精灵。当你将ClassA作为节点的子节点时,ClassA子节点也会自动添加。 (因为他们是ClassA的子女)。

假设你在ClassA init方法创建你的精灵:

- (id) init { 
    if (self = [super init]) { 
     // Create the sprites and then : 
     [self addChild:sprite1]; // Add the sprite as a child of ClassA 
     [self addChild:sprite2]; 
     [self addChild:sprite3]; 
    } 

    return self; 
} 

再加入classA到所需的节点(可能是CCLayer实例):

[self addChild:classAInstance]; // Where self is an instance of your desired CCNode 
+0

谢谢,我应该已经看到了。 – NMunro