cocos2d-x中锚点设置及定位方式
问题
在cocos2d演示样例代码HelloCpp中,为什么要将CCMenu设置位置到CCPointZero,即使CCMenu的锚点是在(0.5, 0.5)?
回答
这是由于CCMenu没有使用锚点进行坐标定位,而是使用的坐标原点。也就是说,CCMenu的坐标原点放到了其父节点的坐标原点。
延伸
不光是CCMenu没有使用锚点定位,像CCLayer,CCScene都没有使用锚点定位。详细设定是在构造函数中设计标记m_bIgnoreAnchorPointForPosition = true;下表描写叙述了节点的默认锚点位置及定位方式
节点类型 | 锚点位置 | 使用锚点? |
CCNode | (0, 0) | 是 |
CCScene及其子类 | (0.5, 0.5) | 否 |
CCLayer及其子类 | (0.5, 0.5) | 否 |
CCSprite及其子类 | (0.5, 0.5) | 是 |
说明:CCNode的其他子类假设没有特殊指定,都是继承了CCNode的锚点位置及定位方式。典型的是CCLabelAtlas,它就是使用CCNode的定位方式,由于它及它的父类CCAtlasNode都没有对锚点位置和是否使用锚点进行设置,而CCLabelFont使用与CCSprite的锚点和定位方式。由于它是CCSprite的子类。
应用
锚点位置和定位方式都是能够改变的。前者通过CCNode::setAnchorPoint()改变,后者通过设定CCNode::m_bIgnoreAnchorPointForPosition来改变。
普通情况下,使用默认的就能够了。什么情况下须要改变呢?像下图这样的情形可能须要改变锚点位置。
这是同一个窗体中使用了两个页面。第一个页面包括一个背景、一幅图和一个字标。后者包括一个背景、一幅图和一个按键。这两个页面能够切换。假设为了实现比較方便地进行变换,每一个页面由一个节点表示是比較合理的。可是是使用哪一个类来表示根节点呢?可选的有四种,各自是CCNode、CCLayer、CCScene和CCSprite。
- 对于使用CCSprite,假设背景是图像。则比較方便实现。可是对于label是图像的孩子理解上有些别扭。
- 对于使用CCLayer,推荐是不使用那么多的Layer,由于第一个页面不须要交互。可是它仍然占用了消息处理的时间。
- 比較好的方式CCScene或CCNode,尽管使用CCScene对于理解上仍然有一些别扭。
不管是使用CCScene和CCNode作为根节点,easy操作的方式都是将锚点设置到(0.5, 0.5),而且使用锚点进行定位。
所以假设使用CCScene须要设定CCNode::m_bIgnoreAnchorPointForPosition=false。而假设使用CCNode须要设定CCNode::setAnchorPoint(ccp(0.5, 0.5))。
利用此接口,能够方便地定位到结点的中心。
当然。使用getContentSize取半也能够。此信息用于对齐结点非常实用处。
CCLayer与CCNode的boundingBox值怎么不一样?
刚才測试出一个奇怪的问题,代码例如以下:?
可是假设将testLayer的类型换成 CCLayer (也就是上面加了凝视那句), 值就变成了 (50, 100)
不知道是哪里的问题??
我的理解 CCLayer 仅仅是在 CCNode上加了一些事件代理, 应该没本质的差别才对. 这里是什么原因呢? 原因是CCNode里有个属性: m_bIgnoreAnchorPointForPosition 表示是否使用锚点定位, 默认是true
但 CCLayer 里这个值是false, 也就是CCLayer根本不适用锚点, 所以会有坐标计算问题
- cocos2d-x中锚点设置及定位方式
- 【转】cocos2d-x中锚点设置及定位方式
- cocos2d-x中锚点设置及定位方式
- cocos2d-x 锚点设置
- cocos2d-x的anchorPoint锚点和scale缩放之间的配合方式
- Cocos2d-x Layer锚点设置
- cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)
- cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)
- a标签设置锚点定位div
- 深入理解Cocos2d-x的anchorPoint锚点和scale缩放之间的配合方式
- 标题定位,设置锚点
- JS跳转页面的方式,以及使用JS锚点定位
- VS2008下设置绝对定位的布局方式
- html中设置锚点定位的几种常见方法(#号定位)
- css position 设置元素的定位方式详解
- 深入理解cocos2d-x的anchorPoint锚点和scale缩放之间的配合方式
- cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)
- Cocos2d label对齐的锚点设置
- cocos2d-x 精灵可视区域的设置与锚点无关系
- cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)