coco2d-x 2.0学习系列(2):基本概念

coco2d-x 2.0学习系列(二):基本概念
基本概念
0.导演(CCDirector)
在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,
均由CCDirector管理,其在游戏中起着指定游戏规则让游戏内的场景、布景和任务有序的运行。在整个游戏里面,一般只有一个导演,游戏开始和结束时,
都需要调用CCDirector的方法完成游戏初始化或销毁工作,其提供了一些场景管理的方法,如runWithScene、DrawScene、pushScene和replaceScen等。
它控制FPS的显示隐藏,窗口大小,游戏的进入,退出,关卡的切换,取得正交模式,取得正在运行的场景,取得GL视图,游戏主循环入口等等
不同的场景由不同的层组成,每个层又包含精灵在上面运动。玩家玩游戏的过程就是在操作层上的精灵或者菜单项,从而在不同的场景中切换。
导演负责不同场景的切换,导演通常只有一个,因此这个对象是单例(singleton)。
任何时间,只有一个CCScene对象实例处于激活状态。

CCDirector类的2大任务:
设置主程序窗口的显示属性
  初始化CCDirector对象  CCDirector *pDirector = CCDirector::sharedDirector();
  设置是否显示FPS  pDirector->setDisplayFPS(true);
  设置游戏画面每秒的帧数   pDirector->setAnimationInterval(1.0 / 60);
 管理显示场景
 CCDirector对象一次只能显示一个场景。为了便于管理场景对象,CCDirector对象有3个属性与场景有关
     /* 当前显示的场景 */
     CCScene *m_pRunningScene;
 
     /* 下一个将要显示的场景 */
     CCScene *m_pNextScene;
 
     /* 待执行的场景队列 */
     CCArray* m_pobScenesStack;
	管理场景方法
/* 用来显示主程序启动后的第一个场景,如果已存在运行的场景,则不可使用 */
     void runWithScene(CCScene *pScene);
 
     /* 挂起当前正在运行的场景,压入待执行场景队列,并开始执行新的场景 */
     void pushScene(CCScene *pScene);
 
     /* 从待执行场景队列中弹出一个场景,并以此取代当前运行中的场景。
      如果待执行场景队列已为空,那么程序将终止运行。 */
     void popScene(void);
 
     /* 直接用一个场景取代当前场景,这是最常用的一个方法。 */
     void replaceScene(CCScene *pScene);
 
     /* 结束运行,释放当前场景。 */
     void end(void);
 
     /* 暂停场景运行。画面还存在,但时间任务停止。 */
     void pause(void);
 
     /* 恢复场景运行。 */
     void resume(void);
1.场景(CCScene)
展示类场景:播放视频 图像文字输出 游戏介绍 胜利失败提示 帮助说明
选项类场景:主菜单 游戏设置 关卡选择
游戏场景:游戏的主要内容
2.层(CCLayer)
实现游戏的内容,一个场景一半包括多个层。 
CCLayer的主要功能在于:
1)接收触摸(touch)操作输入。
2)接收动力感知(Accelerometer)输入。
CCLayerColor(颜色层)
CCLayerGradient(渐变层)
CCLayerGradient是CCLayerColor的子类,可以在背景上绘制渐变色。
CCMenu(菜单层)
CCLayerMultiplex(复合层)
3.精灵(CCSprite)
精灵是整个游戏开发处理的主要对象
精灵就是一个可以不断变化的图片。这些变化包括:位移、旋转、缩放以及图片帧的切换
4.摄像机(CCCamera)  
    游戏中每个节点都需要摄像机,当节点发生缩放,旋转和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机进行重新渲染。
官方对于摄像机的描述是这样的:CCCamera应用于每个CCNode中。 在从不同视野观察时起作用,OpenGL中的gluLookAt函数用来定位摄像机。 假如这个物体通过绽放、旋转、或者平移,那么这些操作将修改摄像机。 注意:使用摄像机或者操作旋转、绽放、平移等属性,你只能选其中一个,假如你使用摄像机,世界坐标就会失去作用。 局限性: 几种节点,如CCParallaxNode,CCParticle使用世界节点坐标,并且他们并不能正常工作,假如你使用摄像机移动他们(或者他们的任何父类)。 在成批的结点上(即一个结点上包含多个节点)如CCSprite对象不会正常工作当他们都从属于一个CCSpriteBatchNode对象时。 推荐你只在创建3d特效时使用。对于2d特效来说,用CCFollow动作或者平移、绽放、旋转更好。 
5.动作(CCAction) 
    角色所具有的动作,一般用于精灵发生动作时使用,如移动,释放魔法等。

	总体关联结构
	                导演--1~n-->场景--1~n-->层--1~n-->精灵--1~n-->动作