如何获得一个Node的BoundingBox
1个回答
推荐于2016-01-20 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
自己写了2个函数,递归获取Node的BoundingBox和ContentSize,用着貌似没什么Bug。。。 onlyTexture参数的意思是只统计贴图占用的空间
Rect getBoundingBoxRecursive(Node *node, bool onlyTexture = true) {
CCAssert(node != nullptr, "node can't be null");
Rect nodeRect = node->getBoundingBox();
nodeRect.origin = node->convertToWorldSpace(Vec2::ZERO);
for_each(node->getChildren().begin(), node->getChildren().end(), [&](Node* subNode) {
Rect subNodeRect;
subNodeRect = getBoundingBoxRecursive(subNode);
if (onlyTexture && nodeRect.size.equals(Size::ZERO)) {
nodeRect.origin = subNodeRect.origin;
}
nodeRect.merge(subNodeRect);
});
return nodeRect;
}
Vec2 getContentSizeRecursive(Node *node, bool onlyTexture = true) {
return getBoundingBoxRecursive(node, onlyTexture).size;
}
Rect getBoundingBoxRecursive(Node *node, bool onlyTexture = true) {
CCAssert(node != nullptr, "node can't be null");
Rect nodeRect = node->getBoundingBox();
nodeRect.origin = node->convertToWorldSpace(Vec2::ZERO);
for_each(node->getChildren().begin(), node->getChildren().end(), [&](Node* subNode) {
Rect subNodeRect;
subNodeRect = getBoundingBoxRecursive(subNode);
if (onlyTexture && nodeRect.size.equals(Size::ZERO)) {
nodeRect.origin = subNodeRect.origin;
}
nodeRect.merge(subNodeRect);
});
return nodeRect;
}
Vec2 getContentSizeRecursive(Node *node, bool onlyTexture = true) {
return getBoundingBoxRecursive(node, onlyTexture).size;
}
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询