CCNode的anchorPoint被默认设定在(0,0)位置
CCScene的anchorPoint被默认设定在(0.5,0.5)的位置
CCLayer的anchorPoint被默认设定在(0.5, 0.5)位置
CCSprite的anchorPoint被默认设定在(0.5,0.5)的位置
说明:CCNode的其它子类如果没有特殊指定,都是继承了CCNode的锚点位置及定位方式。
Layer和Sprite有不同,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)。