节点都是Node对象,节点各自记录了其属性,这些属性会在渲染上体现出来。Scene往往是树根,每个节点的儿子们被方在了Vector<Node*>_children中,自然也有节点的增删改查(addChild;removeChild;removeChildByTag;removeFromParent;removeChildByName;getChildByTag和ByName。。。)
节点的内容:
setLocalZOrder 控制该节点和其兄弟节点绘制先后顺序,数值越大则越靠后被绘制,到时候,会将所有其子节点按localZOrder排序,会先绘制小于0的节点,之后绘制自己,然后是其大于0 的子节点。(setGlobalZOrder 是全局控制函数)
setZOrder:用于3d中
setOrderOfArrival 在节点有相同的Zorder时被用到,在addChild时会调用该函数,一般按addChild顺序来排列。
getChildByName 有两个模样,但是只要会正常的一个就行了(另一个不必要)
1.Sprite*s = (Sprite*)getChildByName(“”); 2.Sprite*s = getChildByName<Sprite*>(“”);
Vector<Node*>&getChildren():这个函数是返回一个包含所有子节点的Vector引用。就是说对这个引用的修改可以改变子节点。
setParent:并非真的能将当前节点挂在父节点下(源码中并没有retain当前节点),故不等于父节点addChild当前节点。
sortAllChildren:按LocalZorder排序,visit中用
getGLProgram:获取GL程序,这个是给显卡用的
isRunning:状态判断。
draw:无参数版的是final的,不许重载,故我们只能重载韩参数版的draw。
getScene:寻找根节点,返回一个dynamic_cast(专用作类类型强制转换)的的Scene对象。这个结果是不缓存的,每次调用就是一个新的计算,最好保存起来。实际使用往往被Director::getRunningScene替代。
getBoundingBox也是不缓存的
getEventDispatcher 和getActionManager 、getScheduler一样是单例
updateTransform:更新子节点的变化(如父节点旋转30度,子节点也想相应操作,则用这个)
很多坐标转换函数。。。