Cocos2d-x v3.1 核心类Director,Scene,Layer和Sprite(六)

Scene就像一个舞台一样在上面会摆放各种的元素,有的是固定的比如说布景,道具都是固定不动的,但有的元素也是可以移动的比如说男女主角。在游戏世界里也是如此,在一个游戏场景中我们会放置不同的元素来点缀我们的场景。当然在游戏世界里,也不能完全跟现实世界相同,为了方便元素的控制,我们将不同的元素放在不同的层,这样也方便管理。在一个场景中我们可以放置多个层,我们可以通过addChild来函数来把层加入到场景中。当我们在设计一个场景时,一般会从在个场景派生出一个自己的类,然后再在里面添加我们的层。

Director是一个单例,在整个游戏中只存在一个实例。Director中文意思是“导演”,在Cocos2d-x中也正如其名,它管理的Cocos2d-x中的所有场景的调度。它能够切换我们的当前场景(游戏中只有一个当前场景),暂停场景中的动作这跟现实中的导演喊“咔”是一样的会暂停整个场景中所有的动作或音效等,当然也可以开始一个场景中的动作和音效。总而言之,Director扮演着一个导演的角色。

Layer是场景中的主要组成元素,由于层的出现让我们能够更好的管理场景中的元素。这里说的层的概念和Adobe Photoshop上的概念是一样的。当我们在设计层上的元素时,一般会从Layer派生出一个类来管层上的元素。当然,在Cocos2d-x中除了给我提供了一个默认的透明层外还为我们提供了一些内置的层比如Menu,LayerColor和LayerGradient等。

Sprite(精灵)是层中的主要组成元素,由于Sprite也是从Node的继承的所以可以把其他的Sprite作为子对象加入到Sprite对象中。Sprite的概念和其他的2D引擎差不多,就是一个2D的图像,可以旋转平移缩放。

下面我们基于前面的Hello world程序,在场景中添加3个层LayerColor,LayerGradient和LayerMultiplex。代码如下:

1: Scene* HelloWorld::createScene() 2: { 3: // 'scene' is an autorelease object 4: auto scene = Scene::create(); 5: 6: // 'layer' is an autorelease object 7: auto layer = HelloWorld::create(); 8: 9: // add layer as a child to scene 10: scene->addChild(layer); 11: auto gradientLayer = LayerGradient::create(Color4B(255, 0, 255, 255), Color4B(0, 0, 255, 255)); 12: gradientLayer->setContentSize(Size(200, 200)); 13: gradientLayer->setPosition(100, 100); 14: scene->addChild(gradientLayer); 15: 16: auto colorLayer = LayerColor::create(Color4B(255, 255, 0, 128)); 17: colorLayer->setContentSize(Size(200, 200)); 18: colorLayer->setPosition(100 + 250, 100); 19: scene->addChild(colorLayer); 20: 21: //test LayerMultiplex 22: auto gradientLayer1 = LayerGradient::create(Color4B(255, 0, 255, 255), Color4B(0, 0, 255, 255)); 23: gradientLayer1->setContentSize(Size(200, 200)); 24: 25: auto colorLayer1 = LayerColor::create(Color4B(255, 128, 0, 255)); 26: colorLayer1->setContentSize(Size(200, 200)); 27: 28: auto multLayer = LayerMultiplex::create(); 29: multLayer->addLayer(gradientLayer1); 30: multLayer->addLayer(colorLayer1); 31: multLayer->switchTo(1); 32: multLayer->setContentSize(Size(200, 200)); 33: multLayer->setPosition(100 + 250 + 250, 100); 34: scene->addChild(multLayer); 35: 36: // return the scene 37: return scene; 38: }

效果如下图:

Cocos2d-x v3.1 核心类Director,Scene,Layer和Sprite(六)的更多相关文章

  1. cocos2dx[3.2](7) 核心类Director/Scene/Layer/Sprite

    [核心类] 导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步: cocos2dx基础篇(2) 第一个程序 导演控制场景,场景控制图层,图层控制精灵,精灵控制动作. ...

  2. Director Scene Layer and Sprite

    Scenes Director Layers Multiple Layers Example: Sprites References Scenes A scene (implemented with ...

  3. cocos2d基本类介绍 director/scene/layer/sprite

    [核心类]     导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步:     导演控制场景,场景控制图层,图层控制精灵,精灵控制动作.     相互之间的关系框架 ...

  4. Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)

    ===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...

  5. cesium核心类Viewer简介

    1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...

  6. Webwork 学习之路【03】核心类 ServletDispatcher 的初始化

    1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...

  7. Hibernate核心类用法-使用Transaction管理事务

    一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据 ...

  8. 理解Lucene索引与搜索过程中的核心类

    理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.ƒDirectory.ƒAnalyzer.ƒDocument.ƒField 1.IndexWriter IndexWr ...

  9. android的消息处理有三个核心类:Looper,Handler和Message。

    android的消息处理机制(图+源码分析)——Looper,Handler,Message   作为 一名android程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设 ...

随机推荐

  1. 9.CVE-2016-5195(脏牛)内核提权漏洞分析

    漏洞描述: 漏洞编号:CVE-2016-5195 漏洞名称:脏牛(Dirty COW) 漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权 影响范围:Linux内核>=2 ...

  2. 12. CTF综合靶机渗透(五)

    运行环境 Virtualbox (二选一) Vnware Workstation player 通关提示 fristi 设置 首先,我们在开始之前,我们按照作者的要求设置虚拟机的MAC地址 08:00 ...

  3. spring framework 源码

    spring framework 各版本源码下载地址 现在spring的源码下载地址真是不好找,这次终于找到了.记录一下,以帮助需要的朋友. https://github.com/spring-pro ...

  4. App集成极光推送开发流程[关键步骤]

    1.客户端集成SDK 1.1初始化 JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志 JPushInterface.init(this); / ...

  5. 如何使用visual studio 2017创建C语言项目

    使用visual studio 2017创建一个C语言项目,步骤如下: (1)打开Visual Studio 2017环境后出现欢迎界面,如图1所示. 图1  Visual Studio 2017欢迎 ...

  6. jquery事件之事件委托和事件切换

    一.事件委托函数: 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) live 用于为指定元素的一个或多个事件绑定事件处理函数. j ...

  7. [Django笔记] uwsgi + nginx 配置

    django 和 nginx 通过 uwsgi 来处理请求,类似于 nginx + php-fpm + php 安装nginx 略 安装配置uwsgi pip install uwsgi 回想php- ...

  8. SKlearn中分类决策树的重要参数详解

    学习机器学习童鞋们应该都知道决策树是一个非常好用的算法,因为它的运算速度快,准确性高,方便理解,可以处理连续或种类的字段,并且适合高维的数据而被人们喜爱,而Sklearn也是学习Python实现机器学 ...

  9. Mol Cell Proteomics. |赵赟| 全面地分析个人尿蛋白质组学的变化揭示出不同的性别变化

    大家好,本周分享的是发表在Molecular & Cellular Proteomics上的一篇关于人的尿蛋白质组学的文章,题目是Comprehensive analysis of indiv ...

  10. mysql执行计划 const eq_ref ref range index all

    explain:查询查询性能或者需要查看使用索引状态 一.type:连接类型  最关键的一列  效率(const>eq_ref>ref>range>index>all) ...