cocos2d-html5 笔记3: Node
Cocos2d采用类似于Dom tree的那种形式来各个部分组织起来。最基本的基类是Node吧,
Node
Node 作为基类,函数很多,我觉得可以分为如下几类,树相关的函数, 一些公共的比较实用的函数, 需要子类实现的接口,还有属性的get, set函数
既然是树,首先要提供子节点的add, insert, remove, get这一大类函数.
作为一个最基本的绘图单元,要考虑scale, rotation, translate, position, BoundingBox这些作为基本几何的属性吧, Zorder 前后的遮挡关系也需要考虑的。 Node里面还有俩个属性,一个是tag, 便于标示和选择Node, 另外一个是userdata, 可以放些附加的数据在这边.
然后就是 把节点给画出来。draw 和visit这两个函数就是干这个的。visit负责去调用子节点的draw和自己的draw函数来把整个树给画出来。在visit这个函数里面 画的时候,考虑了zorder的问题。子类继承的时候,最重要的就是这个draw 函数了吧。:)
Node 还提供了onEnter, OnExit等通知回调函数,在screne 进入和退出的时候会调这个。当子节点被删除的时候会去通知它. 我觉得 从就接口上开说,子类要实现的就是draw, onEnter*, onExit*, update, 这几个函数。
Node提供了一些实用的函数, 为了便于子类的操作,Node还把ActionManager, Scheduler这两个的功能集成了进来。提供了一些接口给子类调用, 这些接口其实就是调用actionManager和schedulerManager 的方法的
子类派生关系
screne
screne很简单,基本上没对Node添加啥功能,它的子类CCTransition, CCTransitionPageDown, CCTransitionProgress提供一些场景切换的效果。
layer
Layer层主要添加了事件处理, 在onEnter
的时候把自己注册到touch, mouse, keyboard, accelerometer的dispatcher里面。 在onExit
的时候,取消注册:)
menu
menu添加对了子类的align, 并且添加了方法_itemForTouch
检测mouse 和touch 这个事件在哪个控件上,然后把事件dispatch到 它上。
spirte
Spirte这个管理了一个texture, 还有bacthMode上的优化。