Cocos2d - 为子级覆盖 addChild

Posted

技术标签:

【中文标题】Cocos2d - 为子级覆盖 addChild【英文标题】:Cocos2d - Overriding addChild for Child 【发布时间】:2013-08-18 15:09:04 【问题描述】:

我有一个继承自 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】:

无需为此任务覆盖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

【讨论】:

谢谢,我应该看到了。

以上是关于Cocos2d - 为子级覆盖 addChild的主要内容,如果未能解决你的问题,请参考以下文章

Django 模板扩展:子级不覆盖父级

NestedScrollView 内的子级未覆盖整个屏幕高度

iframe父子相互调用,相互操作DOM

将子级扩展到父级可滚动内容的 100% 高度

Cocos2D 图层中的自定义滚动

无限极分类