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等 ...
随机推荐
- 欧拉工程第65题:Convergents of e
题目链接 现在做这个题目真是千万只草泥马在心中路过 这个与上面一题差不多 这个题目是求e的第100个分数表达式中分子的各位数之和 What is most surprising is that the ...
- java中什么时候该用static修饰方法?有什么好处或者坏处?
当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static.用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用比如 person这个类里面有一个方 ...
- Orcle数据库查询练习复习:一
一.创建数据库和表 drop table student; create table student ( sid int, sname ), sage int, ssex ), snativeplac ...
- React组件测试(模拟组件、函数和事件)
一.模拟组件 1.用到的工具 (1)browerify (2)jasmine-react-helpers (3)rewireify(依赖注入) (4)命令:browserify - t reactif ...
- 向安富利(Avnet)学什么?
这个只做电子元器件分销的企业,居然能数次进入<财富>排行榜.看来,这是一个在供应链上创造价值的高手.在企业竞争已经集中到供应链竞争的今天,安富利的成功之道,无疑具有特别的意义. 2000年 ...
- 解决不安装VC运行库(VC2005,VC2008),程序运行出错的方法
因为VS2005以后程序采用了manifest的生成方式,所以发布的时候要和运行库一起发布.但是我们平时开发和发布的时候如果都要客户安装运行库,那就不太方便了.你可以Microsoft下载:http: ...
- SQL效率问题
关于in和or的效率对比:http://blog.chinaunix.net/uid-20639775-id-3416737.html 在没有索引的情况下,in的效率高 SQL语句效率:http:// ...
- Restful api测试插件Swagger-UI
现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用REST编写API接口这种场景.例如我目前的工作,移动端交由了另一团队开发,不同开发小组之间就需要以规范和文档作为标准和协作基础 ...
- (五)CSS伪类(Pseudo-class)
CSS伪类用于向某些选择器添加特殊的效果.伪类的语法如下: selector : pseudo-class {property: value} CSS类也可以与伪类搭配使用: selector.cla ...
- C#实现GDI+基本图的缩放、拖拽、移动
C#实现GDI+基本图的缩放.拖拽.移动示例代码如下: using System;using System.Collections.Generic;using System.ComponentMode ...