Cocos2d-x学习之 整体框架描述

1.Cocos2d-x 整体描述

和传统的游戏引擎一样,cocos2d-x作为一个2d的游戏引擎,其也有以下几大概念组成:

导演(CCDiretor):

在cocos2d-x引擎中,CCDirector类是整个游戏的组织和控制核心,游戏的运行规则,游戏内的CCScene(场景)、布景(CCLayer)、角色(CCSprite)等的运动,均由CCDirector管理,其在游戏中起着指定游戏规则让游戏内的场景、布景和任务有序的运行。在整个游戏里面,一般只有一个导演,游戏开始和结束时,都需要调用CCDirector的方法完成游戏初始化或销毁工作,其提供了一些场景管理的方法,如runWithScene、DrawScene、pushScene和replaceScen等。

它控制FPS的显示隐藏,窗口大小,游戏的进入,退出,关卡的切换,取得正交模式,取得正在运行的场景,取得GL视图,游戏主循环入口等等

摄像机(CCCamera)  
    游戏中每个节点都需要摄像机,当节点发生缩放,旋转和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机进行重新渲染。

官方对于摄像机的描述是这样的:CCCamera应用于每个CCNode中。 在从不同视野观察时起作用,OpenGL中的gluLookAt函数用来定位摄像机。 假如这个物体通过绽放、旋转、或者平移,那么这些操作将修改摄像机。 注意:使用摄像机或者操作旋转、绽放、平移等属性,你只能选其中一个,假如你使用摄像机,世界坐标就会失去作用。 局限性: 几种节点,如CCParallaxNode,CCParticle使用世界节点坐标,并且他们并不能正常工作,假如你使用摄像机移动他们(或者他们的任何父类)。 在成批的结点上(即一个结点上包含多个节点)如CCSprite对象不会正常工作当他们都从属于一个CCSpriteBatchNode对象时。 推荐你只在创建3d特效时使用。对于2d特效来说,用CCFollow动作或者平移、绽放、旋转更好。  
场景(CCScene)  
    在游戏里,场景就是关卡。关卡由人物角色和背景构成。在电影里,场景就是电影中的各种场面,各种场面主要由人物活动和背景等构成。而在Cocos2d-x 引擎中,场景存放的是需要渲染的布景,任务角色和菜单,它可以作为一个整体,一起渲染,一起销毁,一起被场景切换使用。

即游戏关卡的实施者,其管理这多个CCLayer,进行场景展现,相关业务逻辑的处理等;  
布景(CCLayer)  
    从概念上说,布景就是场景里的背景。其实就是层次的概念,这种概念在KJava时代就已经存在,就是手动地把游戏中的场景分层(也有靠地图编辑器实现)。  
每个游戏场景中都可以有很多层,每一层有各自的职责任务,例如专门负责显示背景,专门负责显示道具,专门负责显示任务角色等,在每一层上面可以放置不同的元素,包括文本,精灵和菜单等,通过层与层之间的组合关系,我们可以很容易的控制和显示各种各样的界面了,当然,其和photoshop中的层一样,也有透明之说,所以为了能够看到每一层上面的东西,很多层都设置为透明或半透明的,否则只能看到最上面的一层了。

一般一个场景可以有很多层,比如背景图层,物件层,NPC层,角色层,UI层等等,每个层负责自己的功能业务,总的在一个CCScene里共存,随着场景的隐藏而隐藏;不同的层之间可以通过设置不同alpha通道(透明度)进行显示控制;  
角色(CCSprite)  
精灵是整个游戏开发处理的主要对象,包括主角和敌人、NPC等,甚至随机飘过的一片云或飞鸟从技术上讲,也是精灵,因为精灵在cocos2d-x中,就是一个可以不断变化的图片,这些变化包括位置变化,旋转、放大缩小和运动等。  
动作(CCAction)  
    角色所具有的动作,一般用于精灵发生动作时使用,如移动,释放魔法等。

总体来说以上的对象主要关联如下:

时间: 2024-11-08 12:41:10

Cocos2d-x学习之 整体框架描述的相关文章

Cocos2d-x学习笔记(二)Cocos2d-x整体框架描述

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38680123 上一节我们简单分析了HelloWorld工程,这一讲我们将进一步来看看Cocos2d-x的整体框架. 在了解Cocos2d-x的整体框架之前,我们不妨想想拍摄一部电影需要些什么? 导演.舞台(场景).布景.演员,有了这些基本条件后,在这些元素都有了之后,演员就可以根据剧本,表现不同的动作行为. 同理,做一个游戏就像是拍摄一部电影,你同样需要这些元素,而C

duilib学习[1] -- 整体框架

参考自:http://www.who1753.com/duilib-study-01.html 先盗一下图,方便更清楚地了解duilib的整体结构 duilib设计图: 1.1 工具库 这些类分布在Util文件夹中: UI相关:CPoint / CSize / CDuiRect 简单容器:CStdPtrArray / CStdValArray / CStdString / CStdStringPtrMap 1.2 控件库 控件库在duilib的实现中被分为了两块:Core和Control: Co

go微服务框架go-micro深度学习(一) 整体架构介绍

产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目微服务化,松耦合模块间的关系,是一个很好的选择,随然增加了维护成本,但是还是很值得的. 微服务化项目除了稳定性我个人还比较关心的几个问题: 一: 服务间数据传输的效率和安全性. 二: 服务的动态扩充,也就是服务的注册和发现,服务集群化. 三: 微服务功能的可订制化,因为并不是所有的功能都会很符合你的

Java集合总结之Collection整体框架

前段时间一直在忙一个物联网的项目,所以Java的学习一直搁置,从今天开始继续学习!望大家多提宝贵意见! java.util包中包含了一些在Java2中新增加的最令人兴奋的增强功能:类集.一个类集(collection)是一组对象.类集的增加使得许多java.util中的成员在结构和体系结构上发生根本的改变.它也扩展了包可以被应用的任务范围.Java的类集(Collection)框架使你的程序处理对象组的方法标准化.在Java 2出现之前,Java提供了一些专门的类如Dictionary,Vect

LINUX内核分析第六周学习总结——进程的描述和进程的创建

LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 进程的描述 进程描述符task_struct数据结构(一) 进程描述符task_struct数据结构(二) 进程的创建 进程的创建概览及fork一个进程的用户态代码 理解进程创建过程复杂代码的方法 浏览进程创建过程相关的关键代码 创建的新进程是从哪里开始执行的

关于集成学习基础的简单描述

关于集成学习基础的简单描述 什么是集成学习? 集成建模是优化模型表现的一条重要途径.通常来说,将集成学习方法运用在你所构建的诸多模型之上是十分值得的,而同道中人们也一次又一次地证明着这一点.他们在诸如Kaggle之类的数据建模竞赛中往往会不约而同地采用集成学习,并且从中受益. 集成学习其实是一个很宽泛的概念,对于它的定义,可谓仁者见仁智者见智.接下来,本文将介绍一些集成建模的基本概念和思想,这些知识应该足以让你起步,从而去构建你自己的集成模型.同时,和往常一样,我们将尽量让它们看起来简单一些.

PHP再学习5——RESTFul框架 远程控制LED

0.前言 去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客.试想自己也将投身IoT(物联网)行业,就花了些时间研究了它.陆陆续续使用和研究了一年,大致围绕两个问题展开——1.yeelink平台如何使用,2.如何构造一个功能简单些的yeelink平台.    [PHP学习笔记——索引博文] 本文将讨论如何构造一个简单restful架构平台(该平台有点像yeelink,不过功能比yeelink少的多),并结合树莓派实现LED的远程控制(网络控制).构建

Java 线程池(一):开篇及Executor整体框架介绍

一.开篇 线程池.数据库连接池,在平时的学习中总能接触到这两个词,但它们到底是什么?和线程,数据库连接有什么关系?为什么需要“池”?“池”的概念及作用是什么?要弄清楚这些问题,就要深入到“池”的实现中去. 之前找实习工作时,时常有面试官问这类问题,自己平时知道如何使用Java的Executor线程池框架,但是具体的细节还真没感受,所以打算开始试着研究一下Executor线程池框架. 废话到此打住,正式开始! 二.Executor整体框架 让我们先站在一个较高的角度俯视一下Java线程池的整体结构

爬虫学习 11.scrapy框架持久化存储

爬虫学习 11.scrapy框架持久化存储 基于终端指令的持久化存储 基于管道的持久化存储 今日详情 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作. 执行输出指定格式进行存储:将爬取到的数据写入不同格式的文件中进行存储 scrapy crawl 爬虫名称 -o xxx.json scrapy crawl 爬虫名称 -o xxx.xml scrapy crawl 爬虫名称