我是相当新的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