2013-08-18 86 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