在opengl坐标体系中有两个非常重要的参数,即锚点和位置。
锚点:作为位置的参考点,锚点在设置某一个物件(如CCSprite,CCLayer)的位置时,其参照位置,数据为(0.0-1.0)之间,默认是(0.5, 0.5),也就是说其默认参照位置是该物件的中心。如锚点为(0.5,0.5),而矩形的大小是200*100,那么这个锚点相对于矩形的坐标系是(100,50),即是矩形的中间。
我们一般把坐标体系分为3个{屏幕坐标,世界坐标,本地坐标}
主要是都是本地坐标,因为世界坐标相对来说也是屏幕的本地坐标,而屏幕坐标就是现在打开的游戏界面大小。
锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。节点的位置是由我们设置的position和anchor point一起决定的。
值得一提的是,anchor point的默认位置Layer的是左下,而其他的node是中点。节点的原点是父节点的左下角。
Layer* layer1 = LayerColor::create(ccc4(255,0,0,255), 300, 200);
Layer* layer2 = LayerColor::create(ccc4(255,255,0,255), 100, 100);
addChild(layer1);
layer1->addChild(layer2);
layer2->setPosition(50,50);
可见Layer的锚点是左下角,节点的原点是父节点的左下角。
下面是我的一段做好的移动图像截图代码
CCMoveBy *by = CCMoveBy::create(2, ccp(200, 0));
CCMoveBy *by2 = (CCMoveBy *)by->reverse();
CCSequence *seq = CCSequence::create(by, by2, NULL);
big->runAction(CCRepeatForever::create(seq));
CCMoveBy *lby = CCMoveBy::create(2, ccp(0, -100));
CCMoveBy *lby2 = (CCMoveBy *)lby->reverse();
CCSequence *lseq = CCSequence::create(lby, lby2, NULL);
little->runAction(CCRepeatForever::create(lseq));
这差不多就是整个坐标系的简单介绍和操作了,这个我的主要理解是相对而言,类似于火车在开树在后退,参照物不同的说法一样。