从.csb加载的节点的边界框大小为0

时间:2015-11-11 22:09:51

标签: cocos2d-x cocos2d-x-3.0 cocos2d-x-2.x

我创建了Node(里面有图片和标签),我实例化并添加到场景中(用C ++代码)

    auto item_one = CSLoader::createNode("item.csb");
    sprite->addChild(item_one);
    auto r = item_one->getBoundingBox();

并且可见,但r总是widthheight等于zero。这就是为什么我无法获取点击该项目的原因。为什么边界框为零以及如何更改? 在cocos studio Node for item中,维度为542 x 542但是。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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();

如果有帮助,请告诉我。