首页 > 代码库 > Cocos2D-x权威指南: CCNode类方法:
Cocos2D-x权威指南: CCNode类方法:
5.1.4 画图节点CCNode和图层CCLayer
CCNode中提供的方法,在public块中的方法主要有下面几个部分:
1、针对节点显示的属性信息读写
2、针对节点变换的属性信息读写
3、针对子节点的管理相关方法
4、针对节点数据绑定的相关方法
5、针对节点生命周期的相关方法
6、针对节点处理动作CCAction的相关方法
7、针对节点定时任务的相关方法
8、针对节点坐标变换的相关方法在CCNode中的节点都有自己的坐标系,称为节点坐标系,当节点坐标系变换后该节点的全部子节点都会随之变换。
节点在加入到场景时会參考节点的锚点,锚点缺省定义为该节点的中心,在贴图时候会以锚点为中心,改变锚点并没有改变节点的位置,仅仅是改变了贴图的位置。
Cocos2d-x中的世界坐标系和openGL坐标系一致,左下角为0,0点,x轴向右,y轴向上。
CCScene类是CCNode类的子类。和CCNode相比,它仅仅是多了自己的锚点,在屏幕的中间位置。
CCLayer也是CCNode的子类,相比CCNode添加了用户的交互功能。
class CC_DLL CCNode : public CCObject { public: CCNode(void); virtual ~CCNode(void); virtual bool init(); //初始化节点 static CCNode * create(void); //创建节点对象 const char* description(void); virtual void setZOrder(int zOrder); //设定节点Z轴排序 virtual void _setZOrder(int z); virtual int getZOrder(); virtual void setVertexZ(float vertexZ);//设置Z坐标 virtual float getVertexZ(); virtual void setScaleX(float fScaleX); //设定X轴缩放系数(0-1) virtual float getScaleX(); virtual void setScaleY(float fScaleY); //设定Y轴缩放系数 virtual float getScaleY(); virtual void setScale(float scale); //设定缩放系数 virtual float getScale(); virtual void setScale(float fScaleX,float fScaleY); virtual void setPosition(const CCPoint &position); //设定坐标 virtual const CCPoint& getPosition(); //获取坐标 virtual void setPosition(float x, float y); virtual void setPositionX(float x); virtual float getPositionX(void); virtual void setPositionY(float y); virtual float getPositionY(void); virtual void setSkewX(float fSkewX); //设定x轴扭曲系数 virtual float getSkewX(); virtual void setSkewY(float fSkewY); //设定y轴扭曲系数 virtual float getSkewY(); virtual void setAnchorPoint(const CCPoint& anchorPoint); //设定锚点 virtual const CCPoint& getAnchorPoint(); //获取锚点 virtual const CCPoint& getAnchorPointInPoints();//获取锚点绝对坐标 virtual void setContentSize(const CCSize& contentSize); //设定节点尺寸 virtual const CCSize& getContentSize() const; //获取节点尺寸 virtual void setVisible(bool visible); //设置节点是否可见 virtual bool isVisible(); //返回节点是否可见 virtual void setRotation(float fRotation);//设置旋转角度 virtual float getRotation(); //获取旋转角度 virtual void setRotationX(float fRotaionX);//设置X轴旋转角度 virtual float getRotationX(); virtual void setRotationY(float fRotationY);//设置Y轴旋转角度 virtual float getRotationY(); //当节点的ZOrder同样时,使用该值做以区分 virtual void setOrderOfArrival(unsigned int uOrderOfArrival); virtual unsigned int getOrderOfArrival(); //设置GLServer状态 virtual void setGLServerState(ccGLServerState glServerState); //获取GLServer状态 virtual ccGLServerState getGLServerState(); //设置是否忽略锚点位置 virtual void ignoreAnchorPointForPosition(bool ignore); //获取是否忽略锚点位置 virtual bool isIgnoreAnchorPointForPosition(); virtual void addChild(CCNode * child); //加入子节点 virtual void addChild(CCNode * child, int zOrder); virtual void addChild(CCNode* child, int zOrder, int tag); virtual CCArray* getChildren(); //获取全部子节点 virtual void setParent(CCNode* parent); //设置父节点 virtual CCNode* getParent(); //获取父节点 virtual void removeFromParent(); //从父节点中移除 //从父节点移除、參数决定是否清楚本节点 virtual void removeFromParentAndCleanup(bool cleanup); virtual void removeChild(CCNode* child); //移除某个子节点 virtual void removeChild(CCNode* child, bool cleanup); virtual void removeChildByTag(int tag); //移除某个tag相应的子节点 virtual void removeChildByTag(int tag, bool cleanup); virtual void removeAllChildren(); //移除全部子节点 virtual void removeAllChildrenWithCleanup(bool cleanup); virtual void reorderChild(CCNode * child, int zOrder);//重排某个子节点 virtual void sortAllChildren(); //对全部子节点重拍 virtual CCGridBase* getGrid(); //获取网格对象 virtual void setGrid(CCGridBase *pGrid); //设置网格对象 virtual int getTag() const; //获取当前节点的Tag virtual void setTag(int nTag); //设置当前节点的Tag virtual void* getUserData(); //获取用户数据 virtual void setUserData(void *pUserData); //设置用户数据 virtual CCObject* getUserObject(); //获取用户数据对象 virtual void setUserObject(CCObject *pUserObject); //设置用户数据对象 virtual CCGLProgram* getShaderProgram(); //获取Shader程序 virtual void setShaderProgram(CCGLProgram *pShaderProgram); virtual CCCamera* getCamera(); //获取摄像机对象 virtual bool isRunning(); //获取当前Node是否在运行 virtual void registerScriptHandler(int handler); //注冊脚本Handler virtual void unregisterScriptHandler(void); inline int getScriptHandler() { return m_nScriptHandler; }; //运行Lua脚本计划任务 void scheduleUpdateWithPriorityLua(int nHandler, int priority); virtual void onEnter() ; //进入节点对象 virtual void onEnterTransitionDidFinish(); //进入节点动画完毕 virtual void onExit(); //离开节点对象 virtual void onExitTransitionDidStart(); //离开节点动画完毕 virtual void cleanup(void); //停止全部动画和调度 virtual void draw(void); //画图,渲染当前节点函数 virtual void visit(void); //递归遍历当前节点树 CCRect boundingBox(void); //返回节点区域 //设置当前节点的ActionManager virtual void setActionManager(CCActionManager* actionManager); virtual CCActionManager* getActionManager(); CCAction* runAction(CCAction* action); //让当前节点运行动作 void stopAllActions(void); //停止全部动作 void stopAction(CCAction* action); //停止某一个动作 void stopActionByTag(int tag); //停止标记为tag的动作 CCAction* getActionByTag(int tag); //获取标记为tag的动作 unsigned int numberOfRunningActions(void); //返回绑定该节点的动作数 virtual void setScheduler(CCScheduler* scheduler); //设置任务管理器 virtual CCScheduler* getScheduler(); //获取任务管理器 bool isScheduled(SEL_SCHEDULE selector); //是否运行了某个任务 void scheduleUpdate(void); //运行定时调用任务update //依照指定优先级运行update任务 void scheduleUpdateWithPriority(int priority); void unscheduleUpdate(void); //停止update任务 //指定依照的时间间隔和等待时间,指定次数运行某个任务 void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); //指定依照的时间间隔运行某个任务 void schedule(SEL_SCHEDULE selector, float interval); //等待一定时间以后运行某个任务 void scheduleOnce(SEL_SCHEDULE selector, float delay); void schedule(SEL_SCHEDULE selector); //运行任务 void unschedule(SEL_SCHEDULE selector); //取消运行某个任务 void unscheduleAllSelectors(void); //取消运行全部任务 void resumeSchedulerAndActions(void); //恢复节点任务和动作 void pauseSchedulerAndActions(void); //暂停节点任务和动作 virtual void update(float delta); //定时任务回调方法 void transform(void); //矩阵坐标变换 void transformAncestors(void); //预设变换矩阵 virtual void updateTransform(void); //变换方法 //仿射变换从当前节点到父节点 virtual CCAffineTransform nodeToParentTransform(void); //仿射变换从父节点到当前节点 virtual CCAffineTransform parentToNodeTransform(void); //仿射变换当前节点到世界节点 virtual CCAffineTransform nodeToWorldTransform(void); //仿射变换世界节点到当前节点 virtual CCAffineTransform worldToNodeTransform(void); //转化为节点空间坐标,相对于节点左下角,与锚点无关 CCPoint convertToNodeSpace(const CCPoint& worldPoint); //转化为世界空间坐标,相对于节点左下角,与锚点无关 CCPoint convertToWorldSpace(const CCPoint& nodePoint); //转化为节点空间坐标,相对于节点左下角,相对于锚点 CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint); //转化为世界空间坐标,相对于节点左下角,相对于锚点 CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint); //从触屏对象转化为节点空间坐标 CCPoint convertTouchToNodeSpace(CCTouch * touch); //从触屏对象转化为节点空间坐标,输入输出都相对于锚点 CCPoint convertTouchToNodeSpaceAR(CCTouch * touch); //设置变换 void setAdditionalTransform(const CCAffineTransform& additionalTransform); //获取组件 CCComponent* getComponent(const char *pName) const; //加入组件 virtual bool addComponent(CCComponent *pComponent); //移除组件 virtual bool removeComponent(const char *pName); //移除全部组件 virtual void removeAllComponents(); private: void childrenAlloc(void); void insertChild(CCNode* child, int z); void detachChild(CCNode *child, bool doCleanup); CCPoint convertToWindowSpace(const CCPoint& nodePoint); ...... }
Cocos2D-x权威指南: CCNode类方法:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。