Cocos2d-x 主要组件
主要组件
核心组件就是场景(Scene)、结点(Node)、精灵(Sprite)、菜单(Menu)、动作(Action)。
如图

导演 Director
一个游戏只有一个导演,负责控制流程和告诉接收者(recipient)怎么做。可以想象成你是一个生产的执行者,告诉导演怎么做。
导演一个平常的任务就是控制场景的替换和改变,导演在代码里一般是一个单例。
这是一个经典的游戏流程
对于游戏来说,我们就是一个导演,负责导演这个游戏。
场景 Scene
场景是用渲染器(renderer)画出来的,渲染器负责渲染屏幕上的精灵和其他东西。
场景图(Scene Graph)
场景图是一种用来安排图形场景的数据结构,包含一个结点(Node),而结点是在场景图形树(数据结构)里面。

场景图形是一棵树,那么你可以遍历它,Cocos2d-x 用中序遍历算法来遍历树。

这里要提到一个 z 轴的概念(z-order),每个 node 都有一个 z 轴,z 轴是用来决定渲染顺序的,值越大越后渲染。
我们把在场景树左子树的结点(Node)的值设为负数(negative),右子树的值为正数(positive)。
场景(Scene)是结点(Node)的一个集合。
在代码中,构建场景图可以用 addChild()。
1 | //设置z-order的值为-2,放在左子树 |
精灵 Sprites
所有游戏都有精灵这种东西,相当于游戏的角色

精灵很容易创建,它们有一些可配置的属性,例如位置、比例、旋转度、透明度、颜色等。
1 | //创建一个精灵 |
设置属性这部分就不说了,很容易理解。
动作 Actions
创建一个场景,添加了精灵只是其中一部分我们所需要做的。一个游戏要成为游戏,我们要让它动起来!
动作允许结点在时间空间上变化,你可以把精灵从一个点移动到另一个点,当完成的时候还可以设置回调。
你可以创建一系列(Sequence)的动作在一个 Node 上执行。
1 | auto mySprite = Sprite::create(“Blue_Font1.png”); |
Sequences and Spawns
把一系列(Sequences)动作让一个精灵执行,Cocos2d-x 有几种方法。
我们先来看一下,如何用 Sequences。
1 | auto mySprite = Node::create(); |
这样就能让一个精灵按顺序执行一系列的动作,那如何同时执行呢?
那就是 Spawn,Spawn 可以让所有动作同时执行。
1 | auto myNode = Node::create(); |
当你的角色有大量动作要同时执行的时候便可以这样用。
父子关系 Parent Child Relationship
Cocos2d-x 用父子关系来描述属性的传递,父节点的属性改变会作用到子节点。
下图是一个蓝精灵和它的两个孩子

当父精灵的旋转度改变的时候,子精灵的也会改变。

1 | auto myNode = Node::create(); |
当然,如果你改变父精灵的缩放,子精灵的也会改变。

输出消息 Logging as a way to output messages
有时候,当你的 app 运行起来了,你需要看到控制台的输出,可以用 log()。
例如
1 | //简单的字符串 |
当然也可以用 C++ 的 std::cout,虽然 log() 的输出格式更简单。