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个位置转换函数;