本篇目标:理解渲染框架的设计思路、各关键节点的属性和方法。
a、根源种子:Node类,包括3个明显特点:
1、包含Node类对象做为子节点,对应的方法:addChild、getChildByTag、removeChild等;
2、每个类及子类都可以使用定时器,对应方法:schedule、unschedule等;
3、所有的Node类及子类都能执行动作,对应方法:runAction、stopAction等。
b、Node子类通常需要改变3个内容:1、类对象初始化的方式及内容;
2、编写时间回调方法;
3、重载绘制方法。
c、Node类还包括:1、坐标系转换相关的方法;
2、碰撞判断相关的方法。
Node类的属性:
Node属性: | 描述 | 初始值 |
position | 位置 | 0,0 |
scale(x,y) | 缩放尺寸 | 1,1 |
rotation(in degrees,clockwise) | 旋转角度 | 0 |
Camera | 摄像机朝向 | 对象 |
GridBase | 模型网格 | 对象 |
anchor point | 锚点 | 0,0 |
size | 尺寸 | 1,1 |
visible | 是否可见 | TRUE |
z-order | z坐标 | 0 |
openGL z position | openGL Z 坐标 | 0 |
Scene类:
Scene继承Node类,是众多Node节点的载体。与场景切换相关的方法:onEnter、onEnterTransitionDidFinsh、onExit、onExitTransitionDidFinsh,其中onEnter和onExit必然在场景转换过程中的某个时间点调用,而另外两个只有在使用场景切换的特效TransitionScene时候调用。切记每个方法必须调用父类中相同的方法,否则会导致触摸信息丢失以及内存泄漏问题。
6.29总结:了解核心渲染的设计思路:Node做为根源节点,抽象出了整个引擎中其他子Node共有特性,定义了基础属性和方法供整个引擎子类继承,子类通过定义自己的个性化属性和方法,并实现了定时调度和执行动作等来实现丰富易用的游戏功能。引擎中众多子类的管理者就是secne类,scene类继承Node。
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、支持从配置文件中加载。