首先,游戏可以抽象为不断地重复“处理用户输入”->“处理定时事件”->“绘图”这三个动作,从而保持游戏进行下去,直至玩家退出游戏。
1.CCDirector:控制游戏流程的总管类,提供绘图方面的选项以及平台相关的功能。以上提到的三个动作,均包含在CCDirctor的方法中。而引擎会根据不同的平台设法使系统不断地调用这个方法,从而完成了游戏的主循环。
2.CCScene:场景的实现类,是层的容器。
3.CCLayer:层的实现类,是精灵的容器。层还可以用来接受用户输入,例如触摸事件和加速度计事件。
4.CCSprite:精灵的实现类,显示一个静态或动态的图形。图形在引擎中以纹理的形式存在,精灵可以完整或部分地显示纹理。
5.CCNode:一切游戏元素的根类,也是构成渲染树的节点。它提供了基本的绘图属性,可以作为其他节点的容器,提供定时器的功能,可以执行动作。
6.CCMenu:特殊的层,封装了游戏中常用的菜单功能。
7.定时器:分为update定时器与schedule定时器,前者每一帧触发一次,而后者可以指定触发间隔。定时器由定时调度器(CCScheduler)控制,每个定时器互不干扰,串行执行。
PS:事件驱动的普通定时器调用顺序为:系统的主循环调用CCScheduler的update方法,CCScheduler的update方法中调用CCTimer的update方法,CCTimer的update方法中调用定时器对应的回调函数。因此当回调函数触发的时刻,CCScheduler的update方法正处于迭代之中,开发者若此时停止或启用其他定时器,将导致CCScheduler的update方法被破坏,这是开发者所不希望看到的。Cocos2d-x的设计中,通常将这种情况以标记的方式避免迭代破坏。例如,作以“需要被删除”的标记,在此次迭代之后,再清理被标记的定时器。