开发cocos2d程序前有必要对一些基本概念进行介绍:
场景
负责游戏内容
场景(通过 CCScene 对象实现)是程序的工作流程中相对独立的部分。有些人可能喜欢称呼其为“屏幕”或“舞台”。你的应用程序可能具有许多场景,但在某刻只能有一个活动的场景。
例如,你的游戏中可能有下列场景:介绍,菜单,第一关,过场一,第二关,过场二,胜利过场,失败过场,高分记录等等。
你可以将每个场景定义成一个独立的程序; 你可以通过某种逻辑将这些场景联系起来(比如当介绍中断或者完成后,就进入菜单场景,第一关成功将进入过场一,而失败则进入失败过场,等等)。
CCScene 是由一个或者多个层(通过 CCLayer 对象实现)组成。场景的外观和行为是通过层来实现的。
CCScene 类家族中还包括一组称为“过渡” (通过 CCTransitionScene 对象实现),它允许你在两个场景之间进行生成一些特殊的过渡效果(比如淡入淡出,滑入效果等等)。
由于场景是 CCNode 的子类,因此可以使用“动作”对场景进行变换。
主控器
-----总控制 单列模式 只有一个
CCDirector 是一个负责控制场景变化的元件。
CCDirector 是一个单例对象。它知道当前哪个场景是活动的,它负责处理场景的控制,并允许进行“场景调用”之类的操作(比如在进入另一个场景时,暂停当前场景,并在适当时候返回原始场景)。在CCLayer 要求替换当前场景后,实际上是 CCDirector 进行的场景切换。
另外, CCDirector 还负责OpenGL ES的初始化。
层 UI界面
CCLayer 拥有整个可进行绘制的区域,并且知道怎样对自身进行绘制。它还可以是半透明的(还可以在某些地方部分或者完全透明),这样可以看到层后的部分。层是对外观和行为进行定义的元件,所以大部分时间我们都说针对 CCLayer 及子类进行编程的。
CCLayer 还是进行事件处理的地方。事件是通过层进行传递直到某些层捕捉并进行处理。
尽管许多程序要求你定义自定义 CCLayer 类,但 cocos2d 提供了一些有用的预定义的层(比如简单的菜单层: CCMenu,颜色层: CCColorLayer, 其他层之间 的多路器:CCMultiplexLayer,等等)。
层还可以包括 CCSprite 对象, CCLabel 对象以及甚至是 CCLayer 对象。
由于层是 CCNode的子类,因此可以使用“动作”对场景进行变换。
精灵不实现鼠标事件
Cocos2d 的精灵与其他程序库描述的精灵一样,是一个可以进行移动,旋转,大小变化,动画等操作的2D图像。
精灵(通过 CCSprite 类实现)可以拥有其它精灵作为其子成员。当一个父成员进行变换时,其所有子成员也将同时进行变换。
由于精灵是 CCNode的子类,因此可以使用“动作”对场景进行变换。