【问题标题】: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();
    

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多