我有一个继承自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?有没有更好的方法呢?
答案 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