cocos2dx入门三之anchorPoint和position

原创 2012年12月22日 19:23:37
首先,说一下android的canvas。
在android的canvas中,坐标系原点是在手机屏幕的左上角,所以,我们如果要设置一个图形在canvas中的位置的话可以通过设置这个图形的左上角那个点在canvas坐标系中的位置来,这个时候我们是以图形的左上角的那个点为锚点的即图形的xy坐标。比如要把一个边长为20的正方形放在屏幕的正中央,可以把x设为屏幕1/2宽的值,y为屏幕1/2高的值,这个时候,在视觉上的表现就是,正方形的左上角和屏幕的中心点重合了,而不是正方形的中点和屏幕中心点重合,之所以会这样就是因为我们用于决定正方形在canvas中位置的锚点是正方形的左上角的点而不是正方形的中点。在canvas这一套体系中我们是无法去把这个 锚点 从正方形的左上角移到正方形的中点的。

但是在cocos2d中我们可以很容易就做到这点,即可以把用来确定图形在父容器中位置的 锚点 移到图形内的任意位置。这样,我们通过setPosition来给图形设置位置的时候,实际上就相当于是让图形内的这个 锚点 和setPosition表示的在父容器中的位置点重合。比如,之前提到的正方形,如果想要正方形的中心点和屏幕的中心点重合,不用去改xy的值,只需要把这个 锚点 移到正方形的中点就可以了,这样当这个正方形被add到父容器(比如CCLayer)后就会把正方形放置在正方形中点和容器中点重合的位置了。

而这个 锚点 在图形内部的位置就是通过anchorPoint来指定的,anchorPoint的值为0-1,有两个方向的,x轴和y轴,在图形内部,是以左下角为坐标原点(opengl决定的)anchorPoint确定的点在图形内部坐标系中的坐标为
x= anchorPoint.x*图形宽度
y=anchorPoint.y*图形高度

anchorPoint值为(0,1)表示基准点在图形的左上角。
anchorPoint值为(0.5,0.5)表示基准点在图形的中点,cocos2d中精灵默认就是这个值。

这里需要注意的是,position不由anchorPoint来决定,他是外部用来设置图形在父容器中所处的位置的,他不会因为anchorPoint的改变而改变,也就是说他跟anchorPoint实际上没多大关系,父容器会把图形的anchorPoint 锚点 放到position对应的点上以实现子元素的布局。

总结:
其实一句话就可以说清两者的关系。cocos2d会通过让图形(精灵)内anchorPoint对应的点和父容器(层)中position对应的点重合来确定精灵的位置。

cocos2dx的AnchorPoint 有时候无效,很气愤

其实就是 CCPoint AnchorPoint:AnchorPoint 用于设置一个锚点,以便精确地控制节点的位置和变换。 AnchorPoint 的...
  • zwcwu31
  • zwcwu31
  • 2014-04-11 18:31:20
  • 1104

深入理解Cocos2d-x的anchorPoint锚点和scale缩放之间的配合方式

来源网址:http://segmentfault.com/blog/hongliang/1190000000722574
  • chinahaerbin
  • chinahaerbin
  • 2014-10-19 19:43:18
  • 7004

cocos2dx中的坐标系和锚点

在cocos2dx中,坐标系和锚点是非常重要的基础。 在cocos2dx中,坐标原点位于画面的左下角,X轴水平向右递增,Y轴垂直向上递增。使用这种坐标系的原因,是因为cocos2dx是基于OpenG...
  • laowu_csdn
  • laowu_csdn
  • 2015-09-09 19:23:11
  • 2101

cocos2d-x3.2总结(一)Position和AnchorPoint的关系

当cocos2d-x引擎需要绘图时,就需要Position和AnchorPoint等属性。例如:在创建一个Sprite时,要设置Sprite的Position,而我们常常没有设置AnchorPoint...
  • cbbbc
  • cbbbc
  • 2014-07-31 23:51:47
  • 1438

关于Cocos2dx的Position和锚点问题

刚刚在地铁上,有点无聊,突然想到cocos2dx
  • hezijian22
  • hezijian22
  • 2014-11-15 16:47:18
  • 1752

cocos2dx中setPosition的坐标位置

有注意用这个函数的人会发现了。如果我写上下面2行代码显示的结果ru
  • bojie5744
  • bojie5744
  • 2014-11-02 18:20:28
  • 2785

彻底理解position与anchorPoint

原文   http://www.cnblogs.com/benbenzhu/p/3615516.html 引言 相信初接触到CALayer的人都会遇到以下几个问题:   为...
  • yongyinmg
  • yongyinmg
  • 2014-07-18 13:03:53
  • 21950

关于AnchorPoint和setPosition

每一个CCNode(CCLayer,CCSprite)都有Anchor(锚点)
  • leisiyu320
  • leisiyu320
  • 2014-06-09 06:28:30
  • 1367

iOS围绕某点缩放或旋转的AnchorPoint的设定

经常会遇到需求,要求手势的缩放或者旋转操作,要求动作变化围绕某一个特定点,或者是两指的中心点,或者是某一个点。 这个问题首先要清晰的知道,iOS各个view的层次关系。特别是,要清除的知道,当前vi...
  • yongyinmg
  • yongyinmg
  • 2014-07-18 13:08:31
  • 25246

cocos-creator之setPosition坑

详情见这个贴子 在使用的时候要小心了
  • nynyvkhhiiii
  • nynyvkhhiiii
  • 2016-05-05 10:55:29
  • 1804
收藏助手
不良信息举报
您举报文章:cocos2dx入门三之anchorPoint和position
举报原因:
原因补充:

(最多只允许输入30个字)