cocos2d-x 菜鸟实习生学习篇(四) 锚点的理解

这两天一直都在看http://www.cnblogs.com/cocos2d-x/archive/2012/03/01/2376143.html 的博客,

不得不再强调一遍,这博客讲的非常详细,绝对适合新手去看,受益匪浅。

昨天用了半天来研究这篇博客,这个例子讲的很具体,以前的一些疑惑都有豁然开朗的感觉(咋感觉我在拍广告?),其中对于锚点这个词,我觉得很有必要把我的理解拿出来分享下。这货绝对是相当的重要哇!

首先要了解下坐标系:

一般意义上的坐标系为笛卡尔坐标系(应该是初中平面几何开始讲的吧,高中立体几何扩展到三维空间。):

不同的图形库采用不同的坐标系。iPhone平台提供了两种绘图库:Quartz 2D和OpenGL ES。其中Quartz 2D是Core Graphics绘图库的子集,OpenGL ES是跨平台图形库OpenGL的嵌入设备版。这两者的坐标系原点不一样。

Quartz 2D的原点在左上角:

大多数图形窗口应用程序都采用类似的坐标系。这是一种基于虚拟“画布”绘图模型的图形库,绘图指令按次序向“画布”上画下不同的内容,后画的内容会覆盖先画的内容(透明的除外)。这比较容易理解。

OpenGL ES的原点在左下角:

OpenGL ES相对比较复杂,这实际上是一个3D的绘图库,按照“状态机”模型设计的绘图库。他不是简单地让后者叠加在前者上面,而是记录各个绘制内容的三维位置关系,再按照系统设定的投影关系,将绘制的所有内容投影在某个特定的虚拟窗口上。
cocos2d-x是基于OpenGL ES的,所以请大家牢记我们使用笛卡尔坐标系,坐标系的原点在左下角。

然后开始讲锚点:

为了将一个矩形图像精准地放置在屏幕某一位置上,需要设置该矩形的位置参考点。通常人们习惯于将该参考点设置在矩形的左上角上,而在cocos2d-x中我们称其为锚点,默认位置在矩形的中心。

2)Position(位置)

Position就是CCNode对象实际的OpenGL ES坐标。

下图说明了如何利用这两个属性来设置CCNode对象的显示位置:

图中红色矩形框的Position为(5, 5),anchorPoint为(0.3,0.5)。若要选择紫色大圆点A为锚点,则设置anchorPoint为(0, 0),如要选择粉红色大圆点B为锚点,则设置anchorPoint为(1,1)。显然设置为(0.5, 0.5)时,锚点位于矩形对象的几何中心点C,这是CCSprite类对象的默认anchorPoint值。

 

 

lbScore->setAnchorPoint(ccp(1, 1));这个是实现显示时间的,这时候如果锚点设置成,0,0,那么游戏画面将看不到时间,或者说只能看到一点。

设置时间显示位置就是在锚点的基础上进行设置的。


总感觉讲不清楚。。。

 

posted @ 2012-12-11 08:48  star特530  阅读(569)  评论(0编辑  收藏  举报