Scene :场景
了解了Director 以后,接下来介绍 Scene 这个与它紧密相关的游戏组件。
经过以前的学习,咱们已经了解了场景以及它在流程控制中的地位。
在 Cocos2d-x 中,Scene 定义了一个场景。场景仅仅是层的容器。包括了所有需要显示的游戏元素。
所以相对于其它游戏元素,Scene 并无提供什么特别的功能,就是一个十分简单的类。
除了做为层的容器,场景的还有一个
做用就是流程控制。
利用 Director::replaceScene 等方法,咱们可以使游戏在不一样的场景中自由切换。
游戏开发过程当中。当咱们需要完毕一个场景时。会建立一个 Scene 的子类,并在子类中实现咱们需要的功能。
好比,咱们可以在子类的初始化方法中加载游戏资源,为场景加入层。启动音乐播放,等等。
同一时候,场景之间可能也会需要必定的过渡衔接效果,不然,场景的切换会显得十分突兀。
Cocos2d-x 提供了很是多华丽的场景切换特效。好比翻页、波浪、淡出淡入等。
这些特效是经过派生自 Scene 的 TransitionScene 系列特效类来实现的。
TransitionScene。这个scene是用来在两个scene切换的时候。作中间的过渡变化的一个scene。
头文件在cocos\2d\CCTransition.h中;
固然,你也可以模仿 Cocos2d-x 内置的场景切换特效代码,来编写属于本身的特效。
Layer :层
Layer 定义了一个层。与 Scene 相似,层也扮演着容器的角色。学习
然而与场景不一样的是,层一般包括的是直接呈现在屏幕
上的详细内容:
咱们需要在层中放入精灵、文本标签或其它游戏元素;
设置游戏元素的属性。如位置、方向和大小;
设置
游戏元素的动做等。
因而可知。游戏开发的大部分编码时间都用在建立层上。
一般,层中的对象功能相似。耦合较紧,与
层中游戏内容相关的逻辑代码也编写在层内。
在组织好层后,仅仅需要把层依照顺序加入到场景中就可以显示出来了。
要向场景中加入层,咱们可以使用 addChild 方法。
addChild 方法共同拥有三个定义,详细例如如下所看到的:
void addChild(Node* child); //Adds a child to the container with z-order as 0.
void addChild(Node* child, int localZOrder);
void addChild(Node* child, int localZOrder, int tag);
当中 child 參数为将要加入的节点。
对于场景而言,一般咱们加入的节点就是层。先加入的层会被置于后加入的层之下。this
假设想要为它们指定前后次序。可以使用不一样的 localZOrder值,localZOrder表明了该节点下元素的前后次序。值越大则显示顺序越
靠上。localZOrder的默认值为 0。编码
tag 是元素的标识号码,假设为子节点设置了 tag 值,就可以在它的父节点中利用 tag 值找到
它了。
这里咱们可以选择本身需要的方法来向场景中加入层。
在以前的文章中提到的找小三游戏场景的构成中,找小三游戏的场景大体由背景层(backgroundLayer)、动做层
(actionLayer)、触摸层(touchLayer)和菜单层(menuLayer)组成。
若是这些层已经完毕,那么咱们最后要作的就是
在游戏场景的初始化方法中把它们加入到场景中:
this->addChild(backgroundLayer, 0);
this->addChild(actionLayer, 100);
this->addChild(touchLayer,200);
this->addChild(menuLayer, 300);
Layer 的还有一个十分重要的功能是可以接受用户输入事件。包含触摸、加速度计和键盘输入等。
在cocos2d-x 3.0曾经版本号,层与用户输入事件相关的成员如表所看到的。
而在3.0版本号中。採用了事件分发的机制:
(1)在使用时,首先建立一个事件监听器。事件监听器包括下面几种:
触摸事件(EventListenerTouch)spa
键盘响应事件(EventListenerKeyboard).net
加速记录事件(EventListenerAcceleration)设计
鼠标对应事件(EventListenerMouse)code
本身定义事件(EventListenerCustom)orm
(2)以上事件监听器统一由_eventDispatcher来进行管理。它的工做需要三部分组成:
事件分发器 EventDispatcher对象
事件类型 EventTouch, EventKeyboard 等blog
事件监听器 EventListenerTouch, EventListenerKeyboard 等
(3)监听器实现了各类触发后的逻辑,在适当时候由事件分发器分发事件类型,而后调用对应类型的监听器
郝萌主友情提示:
学会了所有的游戏组件。就可以搭积木式的完毕一个游戏了、、、