发人员的劳动成果,转载的时候请务必注明出处: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" alt="">


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

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

触摸事件(EventListenerTouch)

键盘响应事件(EventListenerKeyboard)

加速记录事件(EventListenerAcceleration)

鼠标对应事件(EventListenerMouse)

自己定义事件(EventListenerCustom)

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

事件分发器 EventDispatcher

事件类型 EventTouch, EventKeyboard 等

事件监听器 EventListenerTouch, EventListenerKeyboard 等

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


郝萌主友情提示:
学会了全部的游戏组件。就能够搭积木式的完毕一个游戏了、、、


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

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

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

    解决cocos2d-x中编译出现的一个小问题 对于cocos2d-x 2.×中编译中,若头文件里引入了#include "cocos-ext.h",在进行C++编译的时候会遇到例如 ...

  2. 开源自己的一个小android项目(美女撕衣服游戏)

    这是自己的一个开源自己的一个小android项目(美女撕衣服游戏),也是前6个月开发的,有部分的资源来自网络上的,现在开源出来给大家吧,由于源码比较大,不上传了,我已经上传到源码天堂那个网站那里了,大 ...

  3. 13、Cocos2dx 3.0三,找一个小游戏开发3.0中间Director :郝梦主,一统江湖

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中,我们具 ...

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

    尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 Hello World 分析 打开新 ...

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

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十 ...

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

    原代码来自于网络,因为cocos2d-x 3.0的资料,的确不多,与曾经版本号的接口非常难对上, 所以网上非常多样例都无法调试,对于新学习cocos2d-x 的同学,难度添加了,所以出一个超具体的样例 ...

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

    缘起 1.从事互联网十来年了,一直想把自己的从事开发过程遇到的问题给写出来,分享给大家.可是可是这只是个种想法,想想之后就放下了,写出来的类文章是少之又少.古人说无志之人常立志,有志之人立长志.今天, ...

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

    无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念.在Cocos2d-x中,需要了解的有OpenGL坐标系.世界坐标系和节点坐标系.  1.UI坐标系 IOS/Android/Windows ...

  9. cocos2d-x 3.0 学习笔记: 一个可以拖拽的Label及schedule的应用

    #ifndef _DRAGLABEL_H_ #define _DRAGLABEL_H_ #include "cocos2d.h" USING_NS_CC; class DragLa ...

随机推荐

  1. c++分割字符串(类似于boost::split)

    由于c++字符串没有split函数,所以字符串分割单词的时候必须自己手写,也相当于自己实现一个split函数吧! 如果需要根据单一字符分割单词,直接用getline读取就好了,很简单 #include ...

  2. 移动应用开发(IOS/android等一下)在一般图像缓存方案评述(附流程图)

    在移动应用开发.我们经常从网络请求到该设备显示遇到的场景图片. 假设多次发动每个请求,废物流.浪费电.: 将图片持久化到磁盘也不失为一种策略:但每次从文件读取图片也存在一定的io开销,就算採用此策略, ...

  3. [Linux]scp 命令远程复制

    这些天来干预系统之前没有接触,建立使用用途良好的发展环境 scp命令,那么如何使用查询以下信息. scp是secure copy的缩写.主要用来linux系统之间的文件和文件夹的远程拷贝 能够非常ea ...

  4. Asp.NET MVC3 使用 SignalR 实现推(持续)

    一,Persistent Connection 演示示例教程 1.实现server端代码 1),编写server PersistentConnection 代码 项目中 SignalR 文件夹下创建 ...

  5. mybatis 并发问题解决,参考hibernate

    时候操作同一账户就是典型的样例. 比方A.B操作员同一时候读取一剩余金额为1000元的账户,A操作员为该账户添加100元.B操作员同一时候为该账户减去 50元.A先提交.B后提交. 最后实际账户剩余金 ...

  6. Android下拉刷新上拉载入控件,对全部View通用!

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38868463 前面写过一篇关于下拉刷新控件的博客下拉刷新控件终结者:Pull ...

  7. php+sqlite cms

    1 phpSQLiteCMS 最新版本 phpSQLiteCMS 2.0.4 http://phpsqlitecms.net/ 2 taoCMS  最新版本 [2.5Beta5下载地址] 需要php ...

  8. 调整CentOS的文字登陆界面的分辨率

    通过文字界面登陆到系统,切换到root权限. 用vi打开  /boot/grub/menu.lst 文件  ,因为menu.lst是grub.conf文件的快捷方式,终于打开的还是grub.conf文 ...

  9. paip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同

    paip.jdk1.4 1.5(5.0)  1.6(6.0) 7.0   8.0特点比较与不同 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地 ...

  10. design pattern Builder 生成器设计模式

    其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃. 在本文中,建造者模式设计一个搞笑的一幕.根据这一模型来学习功夫的方法,哈哈. 基类的第一,设计.那么 ...