架构技术
联系我们
当前位置:主页 > 架构技术 >

14、Cocos2dx 3.0游戏开发找小三之Scene and Layer:一场游戏一场梦

发布日期:2019-01-28 作者:AG集&#

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393

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 参数为将要添加的节点。 对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。 如果想要为它们指定先后次序,可以使用不同的 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)

键盘响应事件(EventListenerKeyboard)

加速记录事件(EventListenerAcceleration)

鼠标相应事件(EventListenerMouse)

自定义事件(EventListenerCustom)

(2)以上事件监听器统一由_eventDispatcher来进行管理。它的工作需要三部分组成:

事件分发器 EventDispatcher

事件类型 EventTouch, EventKeyboard 等

事件监听器 EventListenerTouch, EventListenerKeyboard 等

(3)监听器实现了各种触发后的逻辑,在适当时候由事件分发器分发事件类型,然后调用相应类型的监听器
郝萌主友情提示: 学会了所有的游戏组件,就可以搭积木式的完成一个游戏了、、、

http://www.bkjia.com/Androidjc/802555.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/802555.htmlTechArticle重开发者的劳动成果,转载的时候请务必注明出处 :http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director 之后,接下来介...

本文源自: 环亚娱乐

上一篇:android数据存储_SQL数据库
下一篇:没有了