cocos2d-x_main_element
主要组件
核心组件就是 场景(Scene),结点(Node),精灵(Sprite),菜单(Menu),动作(Action)
如图
导演 Director
一个游戏只有一个导演,负责控制流程和告诉接收者(recipient)怎么做,想象一下你是一个生产的执行者,告诉导演怎么做
导演一个平常的任务就是控制场景的替换和改变,导演在代码里一般是一个单例
这是一个经典的游戏流程
对于游戏来说,我们就是一个导演,负责导演这个游戏
场景 Scene
场景是用渲染器(renderer)画出来的,渲染器负责渲染屏幕上的精灵和其他东西
场景图(Scene Graph)
场景图是一种用来安排图形场景的数据结构,包含一个结点(Node),而结点是在场景图形树(数据结构)里面
场景图形是一棵树,那么你可以遍历他,Cocos2d-x用中序遍历算法来遍历树
这里要提到一个z轴的概念(z-order),每个node都有一个z轴,z轴是用来决定渲染的顺序,值越大越后渲染
我们把在场景树左子树的结点(Node)的值设为负数(nagative),右子树的值为正数(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()的输出格式更简单操作