我是相當新的cocos2d開發和遇到問題獲得有效的boundingBox
和contentSize
和運行CCAction
s與CCNode
s與子。在我看來,如果你的CCNode
有孩子,你在CCNode
上撥打boundingBox
(例如),你應該得到一個CCNode
的CGRect
,考慮到它的孩子。或者是我只是錯誤地組織我的代碼..?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
我很想得到一些反饋意見。例如,我開始嘗試使用名稱boundingBox
而不是boundingBoxC
,但不相信這是很好的做法(它涉及到混搭)。或者,如果有更全面,更優雅的解決方案,我很樂意聽到。
謝謝!
與您的問題無關,在您的runActionC中,是不是內存泄漏?你正在拷貝而沒有發佈 – 2012-01-17 00:09:39
@XSlash,謝謝你的支持。我修改了代碼以包含'release'。 – donkim 2012-01-17 01:51:53