1

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];
}

私にはちょっとハッキーに見えますか?これを行うより良い方法はありますか?

4

1 に答える 1

1

addChildこのタスクをオーバーライドする必要はありません。でスプライトを作成するときにスプライトを追加するだけですClassA。またClassA、ノードの子として追加すると、ClassA の子も自動的に追加されます。(それらは の子であるためClassA)。

次の init メソッドでスプライトを作成すると仮定します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
于 2013-08-18T15:16:54.497 に答える