从 .csb 加载的节点具有边界框大小 0
Node loaded from .csb has bounding box size 0
我已经创建了节点(里面有图像和标签),我实例化并添加到场景(在 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
但是。
有人可以帮忙吗?
CSLoader::createNode("fileName.csb") 加载整个 scene/layer(取决于您创建的内容)。如果您想要特定 child 的尺寸,请使用:
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();
如果有帮助请告诉我。
我已经创建了节点(里面有图像和标签),我实例化并添加到场景(在 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
但是。
有人可以帮忙吗?
CSLoader::createNode("fileName.csb") 加载整个 scene/layer(取决于您创建的内容)。如果您想要特定 child 的尺寸,请使用:
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();
如果有帮助请告诉我。