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的主要内容,如果未能解决你的问题,请参考以下文章