首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

cocos2dx入门3之anchorPoint和position

2013-01-04 
cocos2dx入门三之anchorPoint和position首先,说一下android的canvas。在android的canvas中,坐标系原点是在

cocos2dx入门三之anchorPoint和position
首先,说一下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对应的点重合来确定精灵的位置。

热点排行