cocos2d-x面试题
在本资源摘要中,我们将详细介绍cocos2d-x游戏引擎中的重要概念,包括CCScene、CCLayer、CCSprite、CCNode、CCAction、CCDirector等,并简介常用的cocos2d-x工具。
一、CCScene
CCScene是app工作流程上独立块,一个app可能拥有多个scene,但是在任何时候只能有一个是激活状态的。一个CCScene对象由一个或多个CCLayer组成,layer之间是前后相连的。Layer提供了scene的外观和行为。通常的用法是直接用一个或多个layer实例化一个scene。
CCScene的四个基本方法:
* runWithScene(运行画面)
* replaceScene(替换场景,例如从主菜单进入游戏界面)
* pushScene(暂停界面)
* popScene(从暂停的界面还原到游戏界面)
二、CCLayer
CCLayer同样是CCNode的子类,通常用addChild方法添加子节点。CCLayer对象定义了可描绘的区域,定义了描绘的规则。CCLayer可以实现半透明的效果,层的事件相应机制:最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会再接受到事件信号。
三、CCSprite
CCSprite是cocos2d-x中的 sprite 对象,就是一个可以移动、选择、伸缩、动画的2D图形。CCSprite对象的子成员中可以包含其他的CCSprite对象。当CCSprite对象转换坐标系的时候,它所包含的CCSprite对象也会转换坐标系。sprites是CCNode的子类,所以他们也可以使用actions来转换坐标。
四、CCNode
CCNode是场景、层、菜单、精灵等所有节点的父类,它是一个抽象类,没有可视化表示形式,定义了所有节点共有的属性和方法。
五、CCAction和CCActionMessenger
CCAction是动作的基类,主要使用CCFiniteTimeAction有限次动作执行,就是按时间顺序执行一系列动作,执行完后动作结束;CCFiniteTimeAction又分为CCActionInstanse(瞬时动作的基类)和CCActionInterval(延时动作的基类)。CCActionInstanse:没什么特别,跟CCActionInterval主要区别是没有执行过程,动作瞬间就执行完成了;CCActionInterval:执行需要一定的时间(或者说一个过程)。
CCActionMessenger是管理所有Action的单例,一般情况下并不直接使用这个单例,而是使用CCNode的接口,但是假如你想操作的目标不是CCNode的子类或者你想暂停/恢复行动就要使用到CCActionMessenger。
六、常用的cocos2d-x工具
cocos2d-x提供了多种工具来帮助开发者快速开发游戏,包括:
* TiledMap(地图编辑器)
* ParticleEditor(粒子编辑器)
* cocosBuilder(可视化编辑)
* TexturePacker(图片组合工具)
七、CCDirector
CCDirector是singleton模式的共享对象。它知道当前哪个scene是激活的。CCDirector以stack的方式处理scenes的调用(当另一个scene进入的时候,暂停当前的scene,完成之后再返回原来的scene),CCDirector负责更换CCScene,在CCLayer被push的时候,更换或结束当前的scene。另外:CCDirector负责初始化OpenGL ES。
八、CCEGLView
CCEGLView是CCEGLViewProtocol的子类,是用于屏幕适配(这个问题还没全解决啊)
九、CCSpriteFrameCache和CCSpriteBatchNode
CCSpriteFrameCache缓存,CCSpriteBatchNode是一个可以批量绘制多个Sprite的节点,可以提高游戏的性能。
CCNode和CCSprite是如何实现绘制的?CCNode和CCSprite都是使用OpenGL ES来绘制的,CCNode负责提供绘制的基本接口,而CCSprite则是CCNode的子类,继承了CCNode的绘制功能,并添加了自己的绘制逻辑。