节点类是场景类、布景类、精灵类等多个重要类的基类,它负责管理游戏基本单位的基本数据(如位置坐标,缩放比例等。),而场景类,布景类,精灵类则是对其进行扩展。此类中给出的重要方法都可以供其他继承类使用。在学习其子类的时候最好对此类有所了解。
Node类继承与最基础的ref类
精灵类、场景类、布景类等重要的可视化元素类都继承Node类。
需要用到的数据类型
Point类 点 参数是两个浮点型的数据,代表X坐标和Y坐标。
Size类 大小 参数是两个浮点型数据,代表横向长度和纵向长度。
Vertex3F 三维向量 参数是3个浮点型数据,代表三维向量中3个坐标。
Node类的重要方法(也是其子类精灵类、场景类、布景类的重要方法)
关于节点创建和节点操作顺序的相关方法:
static Node* create(void) 创建一个节点对象(子类亦同样),采用工厂模式。
virtual std::string getDescription() 获取节点描述信息字符串。
virtual [void/float] set/getGlobalZOrder(float globalZOrder) 设置/获取全局ZOrder值。
virtual [void/float] set/getLocalZOrder(float LocalZOrder) 设置/获取节点本地ZOrder值。
virtual [void/int] set/getOrderOfArrival(int orderOfArrival) 设置/获取节点的到达顺序。
ZOrder是使用与对节点进行绘制时决定节点的前后遮盖顺序用的。
全局ZOrder优先级大于本地ZOrder。
也就是说 当全局ZOrder相同的时候,由本地ZOrder决定绘制顺序。
关于节点图形属性的方法:
virtual [void/float] [set/get]Scale[X/Y/Z](float scale) 获取/设置在X/Y/Z轴的缩放倍数。
virtual [void/float] [set/get]Scale(float scale) 获取设置整体绘制缩放倍。
virtual void setScale(float ScaleX,float ScaleY) 设置缩放倍数,两个参数代表X,Y轴上的缩放倍数。
virtual [void/const Point&] [set/get]Position(const Point &position) 获取/设置节点的位置。
virtual [void/Vertex3F] [set/get]Position3D(const Vertex3F &position) 获取/设置在三维空间中的位置。
virtual [void/float] [set/get]Position[X/Y/Z](float position) 获取/设置XYZ坐标点。
virtual [void/float] [set/get]Skew[X/Y](float skew) 获取/设置X/Y轴的倾斜数值。
virtual [void/const Point &anchorPoint] [set/get]AnchorPoint(const Point& anchorPoint) 获取/设置节点锚点。
关于节点的锚点
锚点 即使节点的原点(节点在自己的坐标系里坐标为(0,0)的点) 并不是指在总坐标系里的原点。
锚点 (0,0) 原点在节点最左下角。
锚点 (0,1) 原点在节点最左上角。
锚点 (1,1) 原点在节点最右上角。
锚点 (1,0) 原点在节点最右下角。
锚点 (0.5,0.5) 原点在节点中间。
virtual [void/const &size] [set/get]ContentSzie(const Size &contentSize) 设置/获取节点的尺寸,获取回来是矩形。
virtual [void/bool] [set/get]VisibleSize(bool visible) 设置/获取节点是否可见,可见返回TRUE。
virtual [void/float] [set/get]Rotation(float ratation) 设置/获取节点的旋转角度值。
virtual [void/Vertex3F] [set/get]Rotation3D(const Vertex3F &ratation) 设置/获取三维空间中的旋转姿态。
virtual [void/float] [set/get]RotationSkew[X/Y](float rotation) 设置/获取在坐标轴上的旋转偏移值。
virtual [void/bool] [set/get]isIgnoreAnchorPointForPosition(bool ignore) 设置/获取在确定节点位置时是否忽略锚点的作用,true时忽略。
节点类Node采用组合模式,父子节点形成树形结构以表示“整体-部分”的结构层次。
关于节点操作的方法最能体验这模式的精髓,以下是有关节点操作的方法。
virtual void addChild(Node * child) 向节点中添加子节点,参数是节点指针。
virtual void addChild(Node * child,int localZOrder) 向节点中添加子节点,localZOrder参数表示子节点在节点中的本地ZOrder值。
virtual void addChild(Node * child,int localZOrder,int tag) 添加子节点,tag是子节点的标签。
virtual Node * getChildByTag(int tag) 通过子节点标签获取相应子节点。
virtual Vector<Node*> &getChildren() 获取子节点对象指针的容器。
virtual [void/Node*] [set/get]Parent(Node *parent) 设置/获取节点的父节点。
virutal void removeFromParent() 将这个节点从父节点里删除。
virtual void removeFromParentAndCleanup(bool cleanup) 将这个节点从父节点里删除,并且清除此节点上所有动作以及回调,false时不清除。
virtual void removeChild(Node* child,bool cleanup = true) 从节点中删除子节点,并且清除子节点上所有动作以及回调。
virtual void removeChildByTag(int tag,bool cleanup=true) 通过子节点标签从此节点里删除子节点,并且清除子节点上所有动作以及回调。
virtual void removeAllChildren() 删除此节点上所有子节点。
virtual void removeAllChildrenWithCleanup(bool cleanup) 删除此节点上所有子节点,并且清除子节点上所有动作以及回调。
virtual void reorderChild(Node* child,int localZOrder) 重设子节点的本地ZOrder值。
virtual void sortAllChildren() 为子节点排序。
virtual int getTag() 获取此节点标签。
virtual void setTag(int tag)设置此节点标签。
与用户数据相关的方法,有了这些方法开发者就能把数据存入节点中,在需要的时候取出来。
virtual void* getUserDAata() 获取及诶单中预设的用户数据,返回值为用户数据指针。
virtual void setUserData(void *userData)设置节点中的用户数据。
virtual Ref* getUserObject() 获取节点中预设的用户对象,返回值为用户对象指针。
virtual void setUserObject(Ref *userObject) 设置节点中的用户对象。
事件回调方法
virtual void onEnter() 每次进入节点时被回调。(进入的意思是当节点进入游戏时)
virtual void onEnterTransitionDidFinish() 节点进入完成后回调。
virtual void onExit() 节点退出时回调。(退出的意思指节点退出游戏时)
virtual void onExitTransitionDidStart()。 节点在退出时需要处理事情(如过渡动画等),则在退出前回调。
virtual void cleanup() 停止所有正在运行的操作和调度。
动作执行相关方法
virtual void setActionManager(ActionManager* actionManager) 设置动作管理器。
virtual ActionManager* getActionManager() 获取动作管理器指针。
Action* runAction(Action* action) 执行指定动作并返回动作指针。
void stopAllActions() 停止所有动作并删除动作。
void stopAction(Action* action) 删除并停止指定动作。
void stopActionByTag(int tag) 根据标签删除并停止指定动作。
Action * getActionByTag(int tag) 根据标签获取相应动作。
定时调度相关方法
virtual void setScheduler(Scheduler* scheduler) 设置定时调度器
virtual Scheduler* getScheduler() 获取定时调度器
bool isScheduled(SEL_SCHEDULE selector) 判断指定的选择器是否被调度,已被调度返回true。
void scheduleUpdate() 开始定时回调updata方法。
void scheduleUpdateWithPriority(int priority) 按照自定义优先级开始定时调度update方法 参数为自定义优先级。
void unscheduleUpdate() 停止定时回调update方法。
void schedule(SEL_SCHEDULE selector,float interval,unsigned int repeat,float delay) 定时回调制定的调度器,参数为:调度器,每次回调的时间间隔,回调次数,第一次回调前等待多长时间)。
void schedule(SEL_SCHEDULE selector,float interval)上面的简化版,参数为:调度器,每次回调的时间间隔。
void schedule(SEL_SCHEDULE selector,float delay)同上,参数为:调度器,第一次回调等待多长时间。
void schedule(SEL_SCHEDULE selector) 制定调度器每帧回调一次。
void unschedule(SEL_SCHEDULE selector) 停止回调制定调度器。
void unscheduleAllSelectors() 停止所有调度器。
void resume(void) 回复所有设置的被回调的调度器,同时恢复动作和事件监听。
void pause(void) 暂停所有设置的被回调的调度器,同时暂停动作和事件监听。
virtual void update(float delta) 用于开发人员重写后被定时或每帧回调update方法,delta参数为回调间时间差值。
坐标转换相关方法
Point converToNodeSpace(const Point& worldPoint) 将制定点的坐标由世界坐标系转换到本节点坐标系。
Point converToWorldSpace(const Point& nodePoint) 与上相反。
Point convertTouchToNodeSpace(Touch * touch) 将触控点坐标由世界坐标系转换为节点坐标系。
组件相关方法
virtual bool addComponent(Component * pComponent) 想节点中添加组件,添加成功返回true。
Component* getComponent(const std::string& pName) 通过组件名称获取组件。
virtual bool removeComponent(const std::string& pName) 通过名称移除组件。
virtual void removeAllComponents() 移除所有组件。
其余方法
virtual bool isRunning() 判断是否接受时间方法回调(onEnter,onExit等),简单的说就是判定节点是否在运行。
virtual Rect getBoundingBox() 获取节点的矩形边框并返回。
virtual void setEventDispatcher(EventDispatcher* dispacher) 设置事件分发器。
virtual EventDispatcher* getEventDispatcher() 获取事件分发器并获取指针。
virtual Scene* getScene() 获取所在场景
我们可以看到Node节点类几乎全部方法都是可以重写的。