14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想

发人员的劳动成果,转载的时候请务必注明出处: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曾经版本号,层与用户输入事件相关的成员如表所看到的。



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFvbWVuZ3podQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

而在3.0版本号中。採用了事件分发的机制:

(1)在使用时,首先创建一个事件监听器。事件监听器包括下面几种:

触摸事件(EventListenerTouch)

键盘响应事件(EventListenerKeyboard)

加速记录事件(EventListenerAcceleration)

鼠标对应事件(EventListenerMouse)

自己定义事件(EventListenerCustom)

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

事件分发器 EventDispatcher

事件类型 EventTouch, EventKeyboard 等

事件监听器 EventListenerTouch, EventListenerKeyboard 等

(3)监听器实现了各种触发后的逻辑,在适当时候由事件分发器分发事件类型,然后调用对应类型的监听器

郝萌主友情提示:

学会了全部的游戏组件。就能够搭积木式的完毕一个游戏了、、、

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-06 03:45:21

14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想的相关文章

linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol '[email protected]@GLIBC_2.2.5'

解决cocos2d-x中编译出现的一个小问题 对于cocos2d-x 2.×中编译中,若头文件里引入了#include "cocos-ext.h",在进行C++编译的时候会遇到例如以下错误: undefined reference to symbol '[email protected]@GLIBC_2.2.5'/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command li

4、Cocos2dx 3.0三,找一个小游戏开发Hello World 分析

尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 Hello World 分析 打开新建的"findmistress"项目,能够看到项目文件是由多个代码文件及目录组成的.当中 Hello World 的代码文件直接存放于该项目目录中.以下我们来具体介绍一下项目的文件组成. 1."resource" 该目录主要用于存放游戏中须要的图片.音频和配置等资源文件

8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号

重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十分有限,内存尤为宝贵.开发人员必须十分谨慎地利用内存,避免不必要的消耗.更要防止内存泄漏. 基于 Cocos2d-iPhone 的 Objective-C风格的内存管理是 Cocos2d-x 的一个特色. 把 Objective-C 的内存管理方式引入 C++,使得游戏开发的内存管理难度下降了个层次

cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!

原代码来自于网络,因为cocos2d-x 3.0的资料,的确不多,与曾经版本号的接口非常难对上, 所以网上非常多样例都无法调试,对于新学习cocos2d-x 的同学,难度添加了,所以出一个超具体的样例给大家. 源代码地址:http://download.csdn.net/detail/adady/7293629 #include "HelloWorldScene.h" #include "SimpleAudioEngine.h" USING_NS_CC; Scene

跟我一起,利用bitcms内容管理系统从0到1学习小程序开发:一、IIS下SSL环境搭建

缘起 1.从事互联网十来年了,一直想把自己的从事开发过程遇到的问题给写出来,分享给大家.可是可是这只是个种想法,想想之后就放下了,写出来的类文章是少之又少.古人说无志之人常立志,有志之人立长志.今天,就从学习小程序开始,记录在学习过程中的遇到点点滴滴,先做“无志之人常立志”吧. 强调的是,微信小程序开发,我也是从0到1的过程,肯定会有错误或遗漏,还望给指导指导,让我的学习知识更完善,再此先谢过了. 2.bitcms开源内容管理系统也发布了,运营对一个程序老猿来说,确实是个艰巨的任务.自己的想法很

【Cocos2d-x游戏开发】浅谈游戏中的坐标系

无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念.在Cocos2d-x中,需要了解的有OpenGL坐标系.世界坐标系和节点坐标系.  1.UI坐标系 IOS/Android/Windows SDK中通用的UI坐标系默认起点坐标(x=0,y=0)位于坐上角,x轴从屏幕最左边开始,由左向右逐渐增加:Y轴坐标从屏幕最上方开始,由上至下逐渐增加,如图所示: UI坐标系又被称为纹理坐标系,在Cocos2d-x中,只有从纹理截取部分矩形时才使用这个坐标系,例如Sprite的TextureRect属

关于storm0.10.0版本的一个小bug

最近搭建了一个storm环境,发现在提交一个topology之后,supervisor总是会无缘无故的死掉,日志如下 [2000] the maxSleepTimeMs [60000] the maxRetries [5]2016-04-09 16:30:05.719 b.s.event [ERROR] Error when processing eventjava.lang.RuntimeException: org.apache.thrift7.transport.TTransportExc

Webservices部署在IIS6.0上的一个小问题

部署方式还是跟网站的部署方式一样,可是通过localhost访问一直提示400(bad request)错误. 可以在iis上预览到.在vs上引用的时候怎么都预览不到. 换个思路,把localhost换成本机的IP试一下. 问题解决 在vs上添加了web服务的引用后,需要using引用命名空间,别忘记了!!

从0到1完成小程序开发(3)

一,数据的绑定 一个页面只有静态数据往往是不够的,大部分情况下需要在小程序运行的过程中,动态的从服务器端去获取,然后再渲染输出到这个视图中进行显示. 之前的页面为硬解码的方式 <view class="usermotto"> <text style="font-size:60rpx">今日推荐:恋爱循环</text> <image class="img" src="/imgs/banner.pn