cocos2d-x学习笔记(1)

题外话:一直在犹豫到底要不要学习cocos2d-x,是因为我想只看cocos2d-for iPhone的, 但是朋友们都直接推荐,说多平台的诸多好处。我也稍微为以后的前景想了一下,我对android不感兴趣,但是对windows 8干兴趣,说不准那天热血来了,就开始转头去弄windows 8的游戏也说不准。也就干脆早接触早好。

==============================================

cocos2d-x官方wiki:               http://cocos2d-x.org/projects/cocos2d-x/wiki

cocos2d-x官方wiki的中文翻译: http://article.ityran.com/archives/3863

==============================================

 

1.所有cocos2d-x的类都是CCNode的子类,可以通过手动或者通过执行动作(CCActions)进行(场景)切换;

2.CCDirector: 单例,用于在CCSence Stack之间导航,管理CCSence,以及负责初始化 open GL ES;

3.CCSence:   场景,可以展示游戏流程workflow,可接受其他CCNode子类,比如CCLayer, CCSprite等;

3.CCLayer:   层,添加了TouchEvent处理,包括CCTouchBegin, CCTouchMoved, CCTouchEnded, CCTouchCancelled; 这些触摸时间会在CCSence的所有CCLayer上传播,

      直到某一个layer截获时间并处理为止。 复杂的应用程序会要求你定义定制CCLayer子类,cocos2d提供了一些预先定义的层。一些例子包括CCMenu(简单的菜单层),

      CCColorLayer(填充色层),CCLayerMultiplex(可以复用他的子节点,可以每次激活其中一个子节点,同时禁用其他的)。层可以包含任何CCNode作为子节点,包括

      CCSprites(精灵), CCLabels(标签),甚至其他的CCLayer对象。

4.CCSprite: Cocos2d中的精灵和其他游戏引擎中的精灵相似。它是可以运动,旋转,缩放,执行动画,并接受其他转换。

      CCSprite是精灵的实现类,可以拥有其他的精灵作为子节点。当父节点的精灵改变,子节点也随之改变。

 

5.坐标系统

1)UI坐标系: 同iOS屏幕,左上角为远点,x右为正,y下为正; 

2)Direct3D坐标系: 左手笛卡尔坐标系,如图所示;  

3)iOS和cocos2d以及openGL ES坐标系: 右手笛卡尔坐标系,如图所示;      

          

 

 

重点:锚点以及坐标转换

1)锚点的概念如下图所描述,只与一个sprite的位置有关 ; 

2)坐标转换: 由于CCTouch传入的坐标,是使用的UI坐标系,因此,在cocos2d-x中,对触摸事件做出响应前需要对将坐标转换成openGL ES坐标系,也就是右手笛卡尔坐标系。

                    这里所说的坐标,实际上就是一个sprite的锚点位置坐标。

 

这涉及到cocos2d-x中的4个位置转换函数;

CCPoint convertToNodeSpace(const CCPoint& worldPoint);    //获取本地坐标,以node1的左下角坐标为原点,计算node2的锚点相对于node1的锚点的平移
CCPoint convertToWorldSpace(const CCPoint& nodePoint);   //获取世界坐标,暂时将node1坐标当做世界坐标系,然后按照node2的坐标移动node2
CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);  //AR表示相对位置,就是把node1的坐标系原点设置在锚点的位置
CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint); //AR表示相对位置,同上,把node1的坐标系原点设置在锚点的位置
 
 
 
=================
以上,暂时到这里,后面再更新。

 

posted @ 2013-04-23 16:02  traximus  阅读(384)  评论(0编辑  收藏  举报