【问题标题】:Node loaded from .csb has bounding box size 0从 .csb 加载的节点的边界框大小为 0
【发布时间】:2015-11-11 22:09:50
【问题描述】:
我已经创建了节点(里面有图像和标签),我实例化并添加到场景中(在 C++ 代码中)
auto item_one = CSLoader::createNode("item.csb");
sprite->addChild(item_one);
auto r = item_one->getBoundingBox();
它是可见的,但r 总是有width 和height 等于zero。这就是我无法点击该项目的原因。为什么边界框为零以及如何更改?
在 cocos studio Node 中,项目的尺寸为 542 x 542 但是。
有人可以帮忙吗?
【问题讨论】:
标签:
cocos2d-x
cocos2d-x-3.0
cocos2d-x-2.x
【解决方案1】:
CSLoader::createNode("fileName.csb") 加载整个场景/图层(取决于您创建的内容)。如果您想要特定子项的尺寸,请使用:
auto imageNode = item_node->getChildByName("NameOfChildInCocostudio");
auto spriteImage = dynamic_cast<Sprite*>(imageNode);
auto spriteBoundingBox = spriteImage->getBoundingBox();
此时你应该得到图像的宽度和高度。如果你想要它出现的大小,你必须将边界乘以节点比例。使用下面的代码来做到这一点。
auto onScreenWidth = spriteBoundingBox.width * spriteNode->getScaleX();
auto onScreenHeight = spriteBoundingBox.height * spriteNode->getScaleY();
如果这有帮助,请告诉我。