关于Layer与锚点

CCNode的anchorPoint被默认设定在(0,0)位置

CCScene的anchorPoint被默认设定在(0.5,0.5)的位置

CCLayeranchorPoint被默认设定在(0.5, 0.5)位置

CCSprite的anchorPoint被默认设定在(0.5,0.5)的位置

说明:CCNode的其它子类如果没有特殊指定,都是继承了CCNode的锚点位置及定位方式。


LayerSprite有不同,layer如果想要设置锚点与position关联,必须先:ignoreAnchorPointForPosition(false);  否则,layer设置position还是设置的layer左下角(0,0)那个点、而不是锚点!


但是layer不管ignoreAnchorPointForPosition设为何值,layer的锚点对layer设置setScale产生的效果是有影响的!也就是说layer进行缩放的时候与anchorPoint有关,与有没有调用ignoreAnchorPointForPosition(false)无关


layer只是默认忽略了锚点对位置的影响,而锚点对layer其他方面的影响依然存在!


layer如果设置ignoreAnchorPointForPosition(false),则setposition作用的点就是锚点,getposition得到的坐标值也是锚点的坐标值;


layer如果设置ignoreAnchorPointForPosition(true)[默认就是这个设置],则setposition作用的点就是(0,0)点,getposition得到的坐标值也是(0,0)点的坐标值;


layer不能通过setContentSize()来设定响应触摸的范围,设置setContentSize()之后,layer依然能全屏幕响应触摸事件


这里有一点非常值得注意,就是函数ignoreAchorPointForPosition(),这个函数的意 思是在设置节点(包括CCScene,CCLayer,CCSprite)的坐标的时候是否忽略锚点,我们都知道在设置坐标的时候就是用锚点去占据坐标的位置,如果忽略了锚点,那么就是以左下角为占据坐标的那个位置 查询官方的API得到的结论是:This is an internal method, only used by CCLayer and CCScene. Don't call it outside framework. The default value is false, while in CCLayer and CCScene are true。这个函数的默认值是false,但是对于CCScene和CCLayer它的值是true。如果是这样的话,我们在默认情况下设置CCScene和CCLayer的坐标的时候就是以 左下角为占据点的,而不是锚点的(0.5,0.5)。但是对于CCSprite来说正好是相反的,它对于这个函数的默认值就是false,也就是占据点就是它 本身的默认锚点(0.5,0.5)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值