【问题标题】:How to get the width of a Node?如何获取节点的宽度?
【发布时间】:2015-03-16 01:30:53
【问题描述】:

我的想法是我有一个父节点作为一个容器,其中有一堆 Sprite 作为子节点,并且我可以让节点的宽度包括子节点的宽度,因为我假设大小将包含它的子节点,但它看起来不像。

我有一个Node 的子类,通过addChild 添加了几个精灵,但subclassofNode()->getContentSize().width 返回的内容大小始终为0

是否可以获得节点的准确大小?

【问题讨论】:

  • 你在这方面做了什么吗?我很想看看你是如何解决这个问题的。有很多东西会影响容器节点的宽度和高度,包括子节点的缩放和它们的旋转[更不用说它们的位置]
  • @Krystian 我认为您需要手动处理所有这些。就像你说的,遍历所有的孩子并考虑缩放,甚至定位。我最终转向另一个子类来解决我的问题,比如 Sprites,然后最终ui::Widgets。绝对推荐ui::Widget 用于任何定位的东西。

标签: c++ cocos2d-x cocos2d-x-3.0


【解决方案1】:

节点的大小始终为零。 你应该改为 CCSprite 的子类。

如果你想这样做,你需要重写函数“GetContentSize”

【讨论】:

  • 有趣。我使用的是 3.4,所以我相信 CCSprite 现在只是 Sprite。那么getContentSize 不应该考虑它的孩子吗?
  • 如果你在 sprite(/node) 中有薮精灵,你需要重写这个函数。 sprite 只会考虑自己的(当 init 调用时)。
  • 好吧,所以我无法获取子精灵的大小,因为父级的内容大小不会调整通过第一个子精灵。我一定是在做一些奇怪的事情,既然我的子类来自 Sprite 而不是 Node,我在 main.cpp 中遇到了访问冲突,没有改变其他任何东西。仅在 windows 版本中,而不是在 android 版本中。只要父节点被绘制或什么的。
  • 使用节点没问题,还需要覆盖getContentSize
  • 我会进一步调查并回复您。感谢您迄今为止的帮助。
猜你喜欢
  • 2012-08-11
  • 2013-03-19
  • 1970-01-01
  • 2011-03-26
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多