现在的位置: 首页 > 综合 > 正文

2、渲染框架之核心类

2018年05月12日 ⁄ 综合 ⁄ 共 2565字 ⁄ 字号 评论关闭
本篇目标:掌握渲染框架核心类Director、Scene、Layer、Sprite的基本属性和常用方法。

渲染框架核心类包括:Director、Scene、Layer、Sprite。Director对象在整个引擎中只有一个;Scene场景是有限的状态机,无论游戏中有多少状态,只有一个当前的状态在运行中,Scene为整个引擎中其他Node节点的容器;Layer为Sprite的容器。
1、摄像机类(Camera):主要借助OpenGL中的gluLookAt()方法来定位摄像机和物体之间的关系。注意事项包括:1、特殊的Node对象无法使用,比如ParallaxNode、Particle依据的是世界坐标系;2当Sprite来自SpriteBatchNode时无法使用。
2、导演类(Director):引擎渲染框架的指挥者。主要作用:保存引擎中全局配置;管理游戏场景,方法有:runWithScene、pushScene、popScene、popToRootScene、replaceScene、end、pause、resume、drawScene等方法;负责与渲染器OpenGLES保持联系;反馈来自操作系统的应用响应。比如暂停、恢复和结束游戏;在引擎世界和OpenGL之间进行转换坐标。
3、场景类(Scene):不包括任何游戏逻辑,仅仅做为一个容器,将不同的层组合到一起,最终呈现给玩家一个画面。游戏中常用的场景包括:显示类场景;选项类场景;游戏内容场景。
场景特效:
场景转换特效: 说明
TransitiongFade 淡进淡出
TransitionFaddBL 从右上开始的图块反转效果
TransitionFaddTR 从左下开始的图块反转效果
TransitionTurnOffTiles 图块关闭
TransitionJumpZoom 跳出缩小效果
TransitionMoveInl 从左侧移除
TransitionPageTurn 翻页
TransitionRadial 雷达转针效果(逆时针)
TransitionRotoZoom 旋转缩小
TransitionShrinkGrow 变大效果
TransitionSlideInl 从左侧推动
TransitionCrossFade 交叉淡进淡出
TransitionRadialCW 雷达转针效果(顺时针)
TransitionPageForwar 前翻页效果
TransitionPageBackward 后翻页效果

4、层(Layer):主要用于划分游戏画面,层的主要功能包括:1、接受用户操作,比如触屏、重力加速度计的信息。2、做为游戏内容元素的容器,用于显示游戏画面、承载精灵类、字体文本等对象。3、填充游戏背景颜色。Layer子类有:1、LayerColor及其子类LayerGradient;2、Menu菜单图层及MenuItem及它子类;3、MultiplexLayer复合层(不推荐使用)。Layer是Sprite的载体,在Scene中通过组合不同的Layer显示出多彩的效果。

5、精灵(Sprite):Sprite继承自Node、TextureProtocol、RGBAProtocol。在游戏实现中起到灵魂的作用,通过Spirte的绘制可以创造出各种各样的精彩游戏。精灵属性包括:
精灵属性

Glubyte m_nOpacity 透明度、
ccColor3B m_sColor 颜色值、
TextureAltas* m_pobTextureAtlas 纹理图集、
unsigned int m_uAtlasIndex 纹理图集序号、
SpriteBatchNode* m_pobBatchNode 精灵集合对象指针、
bool m_bDirty 是否重新绘制、
bool m_bRecursiveDirty 是否递归重新绘制、
bool m_bHasChildren 是否拥有子节点、
bool m_bShouldBeHidden 是否隐藏、
CCAffineTransform m_transformToBatch 精灵集合转换坐标、
ccBlendfunc m_sBlendFunc 混合属性
Texture2D* m_pobTexture 精灵纹理
Rect m_obRect 矩形碰撞
bool m_bRectRotated 矩形是否旋转
Point m_obOffsetPosition 偏移坐标、
m_obUnflippedOffsetPositionFromCenter 偏移坐标、
bool m_bflipX X轴是否反转、
bool m_bflipY Y轴是否反转。
6.30总结:渲染框架的核心:Director、Scene、Layer、Sprite等组合成整个引擎的精髓,开发者基于此框架完成游戏逻辑的填充。引擎启动后获取到Director对象,执行runScene后,整个游戏就启动了。通过Sprite的绘制实现每个Layer的效果,通过多个Layer组合游戏画面,对Scene填充Layer,至此完成整个游戏的管理。
SpriteBatchNode类:继承Node和TextureProtocol类。其子类包括:LabelBMFont和TMXLayer。限制条件:1、只能接受精灵对象为子节点。2、所有的精灵对象必须使用同一张纹理图片。使用场景:1、需要显示两个或者更多个相同的精灵对象时使用,节点越多,节省的效率越大。2、当在同一个场景中存在很多独立的精灵对象时,可以将他们整理为一张纹理。缺点:1、所有的子节点处于同一个画面层次,无法添加其他精灵。2、系统平台通常对纹理图片的尺寸限制。
static SpriteBatchNode * create(Texture2D* tex,unsigned int capacity=29)
static SpriteBatchNode * create(const char* fileImage,unsigned int capacity=29)

SpriteFrameCache和SpriteFrame特点:1、SpriteFrmae继承Ref类,不是继承Node类,所以无法绘制,不能加入到节点链表中。2、持有一个纹理对象,对精灵对象动画提供支持,SpriteFrame使得纹理载入内存和生成精灵对象分离,使得对精灵控制更加自由,对内存管理控制更好。3、支持从配置文件中加载。

抱歉!评论已关闭.