CCNode 内部元素的定位
Posted
技术标签:
【中文标题】CCNode 内部元素的定位【英文标题】:Positioning of elements inside CCNode 【发布时间】:2014-04-28 20:27:55 【问题描述】:我在 SpriteBuilder 中创建了一个 CCNode,并添加了一些子节点(标签、按钮和精灵)。在 SpriteBuilder 上,我使子节点的位置相对于父节点的左上角保持不变。
在运行时,我更改了父节点内容的大小,但子节点的位置相对于顶部不会保持不变。
我要做的扩展节点:
self.contentSize = CGSizeMake(self.contentSize.width, self.contentSize.height+50);
我在扩展前后检查颜色节点(给出深蓝色的节点,它是正在扩展的节点的子节点,并且具有 100% 的高度)contentsize,它确实增加了 50 个点,但在截图我们可以看到深蓝色区域没有增加。
我还检查了扩展前后标题标签的位置,它与左上角的点数相同。但是在截图中我们可以看到它离顶部更远。
【问题讨论】:
我在SpriteBuilder中一般不使用定位。我更喜欢用代码编辑位置。只需转到项目代码连接,选择 doc root var,然后为精灵写一个名称。现在在你的代码中,像往常一样定位它,“spriteName.position = ccp(where top left);” 如果位置与左上角相关(在代码和 spritebuilder 中),当父节点高度增加时,到左上角的距离不应该保持不变吗? 如果在代码中按点定位它,它将保持不变。但是您必须确保精灵的内容节点位于左上角或左下角,以便您有参考。如果它在底部, sprite.position = ccp(pointsX,size.height-pointsY);其中大小为:CGSize size = [[CCDirector sharedDirector]viewSize];因此,即使视图发生变化,您的精灵也会相对于左上角。 你父节点的锚点是什么?您能否添加一张图片来展示这 2 个场景的外观,以及您所看到的和得到的? @lucianomarisi 我已经添加了两张图片。 【参考方案1】:没有代码很难说。
这里是一个代码 sn-p,它完成了 SpriteBuilder 视觉上所做的事情
someNode.positionType = CCPositionTypeMake(CCPositionUnitNormalized, CCPositionUnitNormalized, CCPositionReferenceCornerBottomLeft);
我希望这可以帮助您调试问题。您必须检查节点位置类型的参考角是否设置正确。
【讨论】:
赞成提供有助于调试过程的有用信息。以上是关于CCNode 内部元素的定位的主要内容,如果未能解决你的问题,请参考以下文章
用另一个 CCSprite/CCNode 剪辑 CCSprite/CCNode - Cocos2D