Cocos2d - 覆盖子级的addChild

时间:2013-08-18 15:09:05

标签: objective-c cocos2d-iphone

我有一个继承自CCNode的类。我想覆盖将此类添加到父级。

因此,如果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];
}

看起来有点像我的hacky?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

无需为此任务覆盖addChild。 您只需在ClassA中创建精灵即可添加精灵。当您将ClassA添加为节点的子节点时,也会自动添加ClassA子节点。 (因为他们是ClassA)的孩子。

假设您在ClassA的初始化方法中创建了精灵:

- (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