from://http://www.cnblogs.com/ArmyShen/p/3239664.html
1、CCDirector(导演类)
控制游戏流程的主要类,主要负责设定游戏窗口、切换场景、暂停或恢复场景等工作。
由于CCDirector的全局性,所以它是一个单例,整个程序中只会存在一个它的实例:
//获得CCDirector实例 CCDirector *pDirector = CCDirector::sharedDirector();
/*--------CCDirector场景管理方法--------*/ //程序启动时运行第一个场景时调用 void runWithScene(CCScene *pScene); //直接替换当前运行的场景为pScene,这是最常用的一个场景切换方法 void replaceScene(CCScene *pScene); //将当前场景暂停,压入到带待执行场景栈中,设pScene为当前运行的场景 void pushScene(CCScene *pScene); //释放当前场景,并从待执行场景栈中弹出栈顶场景,将其设为运行场景。如果栈为空,则退出程序。与pushScene结合使用 void popScene(void); //暂停当前场景中的所有内容 void pause(void); //恢复暂停的场景,与pause结合使用 void resume(void); //结束场景,退出游戏 void end(void);
2、CCScene(场景)
没有特别的功能。通常是作为层(CCLayer)的容器,它的另一个作用就是流程控制,可以利用CCDirector::replaceScene(CCScene *pScene)自由的切换场景。
可以使用CCLayer替代CCScene,但是这样就不能使用CCTransitionScene实现场景间的切换效果了。
3、CCLayer(层)
CCLayer和CCScene有类似的作用,就是作为游戏元素的容器。不同的是,CCScene中通常包含一个一个CCLayer,而CCLayer中通常包含CCSprite、CCMenu、CCLabel等用户可见的节点元素。CCLayer另一个重要的作用就是接收用户的输入事件,包括触摸、重力加速、键盘输入等。
4、CCSprite(精灵)
CCSprite是游戏最重要的组成元素,游戏中的一草一木都是通过CCSprite体现出来的。创建CCSprite有很多种方式,使用起来也非常的灵活,具体参考源代码。
5、CCNode(节点)
CCNode是所有游戏元素的基类(CCScene、CCLayer、CCSprite等),因此这些子类节点共同拥有CCNode所提供的特性。也就是说继承自CCNode的可绘制节点都拥有比如位置、缩放、旋转、是否可见等属性,节点的最基本功能包括:
1)包含其他CCNode对象 -- 可以把任何一个CCNode节点添加到另一个节点上去
2)接收各种事件与回调 -- 如定时器事件
3)执行动作 -- runAction
6、定时器
定时器:以一定的时间间隔,不断的检测游戏事件,从而使游戏发生动态变化的工具
Cocos2d-x提供了两种方式的定时机制:
1)update定时器 -- 该方法每帧都会被触发调用一次。CCNode默认没有开启update方法,可以调用scheduleUpdate()启用定时器,unscheduleUpdate()停止定时器,最主要的还需要重载一下CCNode的update(float)方法,需要定时更新的内容都在update函数中实现。
//开启定时器 this->scheduleUpdate(); //每帧调用update函数,更新里面的内容 void update(float delta) { i++; }
2)schedule定时器 -- 该方法可以让用户设置触发调用的时间间隔。要注意的是,这个时间间隔必须大于2帧的间隔。
//每隔1s调用一次updateGame函数 this->schedule(schedule_selector(HelloWorld::updateGame), 1.0f); //updateGame函数 void updateGame(float dt) { i++; }
7、onEnter() / onExit()方法
onEnter() -- 节点所在的场景即将显示的时候被调用
onExit() -- 节点所在的场景即将退出时被调用
通常一个继承自CCNode或CCLayer的类中都会有一个init()方法用于初始化这个节点上的数据,init这个方法也是对基类相同函数的重载,需要注意的是,init()这个方法会在onEnter()方法之前被调用。它们主要的区别就是init()方法只会在类初始化的时候被调用一次,而onEnter()方法会随着所在节点的隐藏显示可能会被调用多次。