cocos2d-x知识巩固-基础篇(2)
上一篇博客介绍了整个cocos2dx引擎需要掌握的各个模块,每一个模块实际上往深了研究都有难点,后面我会详细地去分析它的用法。今天我们从第一个模块说起,即渲染模块。首先,为了理解,我们做个类比,说明该模块中几个类之间的关系:
如果把一个游戏项目的开发比作一部电影的制作的话,那么导演(CCDirector类)的作用也就不言而喻,它控制整个游戏的良好运行。导演可以决定这部电影的拍摄场景(CCScene类),比如说在北京,场景可能会根据需要进行转移,因此场景可能会有多个,但同一时刻只能在一个地方。地点确定好了,就要选址,搭建摄影棚,也就是拍摄场地(CCLayer类),然后就是演员们(CCSprite类)的表演了,这样就完成了一部电影的拍摄过程,但是别忘了后期制作,比如需要给电影加上字幕(CCLabel类)等,那么菜单呢,可以理解为开头的介绍,比如主演:xx 导演:xx 。说道这里我想大家都能理解透彻了。下面简单介绍用法:
导演类:CCDirector
它是一个单例,在整个游戏运行期间只实例化一次,维护一个实例对象。
场景类:CCScene
可以理解为一个容器,就像剧院一样,在剧院中搭建舞台(即CCLayer)上演节目。一个场景中可以有多个层CCLayer,我们可以通过层的Z轴标记或者层的名字来找到这个层对象。场景可以做特效,即不同场景进行切换时的效果,比如淡进淡出、百叶窗、旋转缩小等。
刚开始的时候对层和场景可能会有点蒙,主要是因为项目自带的这个HelloWorldScene(有的是HelloWorldLayer)搞得鬼,实际上我们不是那么用的,实际项目中一般不写“static CCScene* scene();”这个方法。我们一般需要场景的时候直接创建一个自定义的场景类,继承CCScene,在任何需要切换场景的地方,创建我们自定义的场景类,并由导演类来切换场景:
图层类:CCLayer
个人理解就是做画面渲染的,好比画家手中的画板,我们可以在上面涂鸦,添加精灵。现在的游戏通常至少要分三个层,例如一个简单的主菜单画面:
层--最重要的就是能够“接受用户操作”,除此之外还可以填充游戏背景颜色等。通常我们创建一个类,继承CCLayer,并添加“virtual bool init()”方法进行初始化,并在其中添加新的内容,实现我们的功能。
--init()方法内部必须调用父类的init()方法做初始化工作--
注:virtual关键字声明虚函数,就是说,如果以后扩展了子类,子类重写这个init()方法,那么运行时子类对象执行的是子类的init()方法,屏蔽掉父类的init()方法,其他方法同理。
精灵类:CCSprite
本质上,就是一张2d图片,但是难点还是很多的,比如锚点(CCAnchorPoint)和位置(CCPosition)的区别,精灵帧动画的三种方式,还有使用cocoStudio编辑器做骨骼动画等,这些都会单独拿出来去讲,我们先介绍精灵的用法,再解释一下锚点和位置:
锚点和位置的区别:
首先,要区别精灵和图片,实际上精灵只是层中的一个点而已,这个点就是精灵的位置(position),如果不给它附上图片的话,它就是一个点,图片让它有了可视化的形象,由于图片肯定不是一个点,而是一个矩形的框,那么给精灵附加图片的时候,该把图片的哪个位置放到精灵的位置(position)上呢,这就是锚点的作用,设置锚点(anchorPoint)实际上是更改了图片的中心点,默认的时候中心点在图片的中间,锚点是(0.5,0.5):也就是说图片的中心点是通过anchorPoint来设置。
设图片宽为W = 100 ,高 为 H = 200 :设置中心点时坐标系以图片的左下角为原点画坐标系
当anchorPoint为(0,0):图片的中心点在(100 * 0,200 * 0)处,这只是图片的中心点,千万记住
当anchorPoint为(0.5,0.5):图片的中心点在(100 * 0.5,200 * 0.5)处;也就是视觉上的图片中心
当anchorPoint为(1,1):图片的中心点在(100 * 1,200 * 1)处;
文字类:CCLabel
比较简单,不想多说,给一个链接:点击打开链接-CCLabel,有时间回来补充。
菜单类:CCMenu
创建一个菜单的思路很简单,首先得有菜单项,然后基于菜单项创建菜单,菜单项要能点击,因此还要添加事件的监听回调函数。由于菜单项可以是多种多样的,因此,引擎提供了多种创建菜单项的类,直接看代码:
渲染框架大体介绍这些,好多细节的难点会在后面单独研究,基础部分也就这些吧,其他的稍有难度,下一篇开始进阶吧。
cocos2d-x知识巩固-基础篇(2)的更多相关文章
- Linux虚拟网络:Docker网络知识之基础篇
我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...
- cocos2d-x知识巩固-基础篇(1)
有段时间没有学习cocos2dx了,作为新人,自己觉得还是要稳扎稳打,一点点的去积累,梳理好每一个知识点,这样对自己的成长能够有一个更清晰的认识,以便做更好的提高. 从2013年8月开始接触cocos ...
- 测试人员需要了解的sql知识(基础篇)
这是第一篇关于数据库的,本着详细的原则,基础的还是不能放过,还是那句话,有问题,欢迎指出! ------------------------------------------------------ ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- Jmeter 接口测试知识梳理——应用基础篇
Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter 接口测试知 ...
- 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)
博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞
- C#多线程之基础篇3
在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
随机推荐
- 【Linux高频命令专题(11)】cp
概述 cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是 ...
- JavaScript DOM编程基础精华03(动态设置,层的操作,性能问题)
代码是否需要放置到onload中 //如果js代码需要操作页面上的元素,则将该代码放到onload里面. //因为当页面加载完毕之后页面上才会有相关的元素 //如果js代码中没有操作 ...
- 内存单元按字节编址,地址0000A000H~0000BFFFH共有几个存储单元
一般可以这样:按十六进制(bffff-a000)+1=1fff+12000H=2x16x16x16=81928192/1024=8 最后是8k或者按二进制bfff-a000=0001 1111 111 ...
- 【原创】MySql 数据库导入导出(备份)
啥不说了,两周前刚刚做过mysql导入导出的结果现在又忘了.. 更可悲的是竟然同样的三篇blog,现在看起来还是如当初一样费劲,里面的内容..所以自己写个记录一下 环境:*nix 权限:有相关表的写读 ...
- ActiveMQ集群(2)
ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要有两种:Master-Slave和Broker Cluster. 1.Master-Slave ...
- IDEA 创建Web项目并在Tomcat中部署运行
IDEA 14.0.5 apache-tomcat-8.0.32 步骤:File->New Project,在Java列表中勾选Web Application(3.1),点击Next 建立web ...
- 【转】android 自定义控件
Android自定义View实现很简单 继承View,重写构造函数.onDraw,(onMeasure)等函数. 如果自定义的View需要有自定义的属性,需要在values下建立attrs.xml.在 ...
- 关于引用mshtml的问题
今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll.查这个dll的时候还发现了好几篇关于这个dll添加问题的文章.顺便看了下,原来这 ...
- vi编辑器基本用法介绍
vi是Linux系统中编写文件的工具 如果vi出现乱码情况,需要升级vi,命令如下: sudo apt-get install vim //升级vi vi的启动方式有两种,直接使用vi命令和在vi命 ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...