私はcocos2dの開発に新しく、有効なboundingBox
とcontentSize
を取得し、CCAction
を子どもと一緒にCCNode
に実行するという問題に遭遇しました。あなたのCCNode
に子供がいて、CCNode
にboundingBox
(たとえば)と呼んだ場合、の子どもを考慮したCCNode
が得られるはずです。それとも、私のコードを間違って整理しているのですか?子どものプロパティとアクションを持つCCNode
とにかく、私はCCNode
の小さなカテゴリを書いています。正しいカテゴリはboundingBox
とcontentSize
であり、その子に対してアクションを実行しているようです。
@implementation CCNode(Children)
- (CGRect)boundingBoxC {
if (self.boundingBox.size.width != 0 || self.boundingBox.size.height != 0) {
return self.boundingBox;
}
CGRect holderRect = CGRectZero;
for (int i = 0; i < self.children.count; i++) {
CCNode *node = [self.children objectAtIndex:i];
holderRect = CGRectUnion(holderRect, node.boundingBoxC);
}
return holderRect;
}
- (CGSize)contentSizeC {
return self.boundingBoxC.size;
}
- (void)runActionC:(CCAction *)action {
[self runAction:action];
for (int i = 0; i < self.children.count; i++) {
id action2 = [action copy];
CCNode *node = [self.children objectAtIndex:i];
[node runActionC:action2];
[actions2 release];
}
}
@end
私はこれについていくつかのフィードバックを得たいと思います。たとえば、私はboundingBoxC
の代わりにboundingBox
という名前を使用することから始めましたが、それは良い練習(それはうねりを伴う)であるとは確信していませんでした。また、より包括的で洗練されたソリューションがあれば、それについて聞いてみたいと思います。
ありがとうございます!
あなたの質問とは無関係に、あなたのrunActionC:ではメモリリークはありませんか? –
@XSlashをリリースせずにコピーしています。ヘッドアップのおかげです。私は 'release'を含むようにコードを修正しました。 – donkim