cocos2dx进阶学习之CCNode

继承关系

CCNode  -> CCObject

CCNode在cocos2dx中抽象舞台对象,需要渲染的对象都是从CCNode派生,包括CCScene,CCLayer,CCSprite等等

CCNode提供包容关系管理

成员函数

virtual bool init();

static CCNode * create(void);

创建和初始化接口,create函数会自动调用autorelease

virtual void setZOrder(int zOrder);

virtual void _setZOrder(int z);

virtual int getZOrder();

ZOrder相关设置,ZOrder是指在Z轴方向的顺序,指示对象的覆盖关系,其中_setZOrder只是改变本对象的成员函数,setZOrder除了改变本对象成员,还会调用父节点相关函数改变该对象在父对象中的位置

virtual void setVertexZ(float vertexZ);

virtual float getVertexZ();

设置OpenGZ的z向量,这个可能会破坏cocos2dx的ZOrder关系

virtual void setScaleX(float fScaleX);

virtual float getScaleX();

virtual void setScaleY(float fScaleY);

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 getPosition(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);

virtual float getSkewX();

virtual void setSkewY(float fSkewY);

virtual float getSkewY();

设置翻转

virtual void setAnchorPoint(const CCPoint& anchorPoint);

virtual const CCPoint& getAnchorPoint();

设置锚点,锚点是指设置点相对于自己的坐标点,这里anchorPoint是一个比例值,默认一般(0.5,0.5)

virtual void setContentSize(const CCSize& contentSize);

virtual const CCSize& getContentSize() const;

设置未转换的节点尺寸,所有的node都有尺寸,Scene和Layer的尺寸与屏幕相同

virtual void setVisible(bool visible);

virtual bool isVisible();

设置是否显示

virtual void setRotation(float fRotation);

virtual float getRotation();

virtual void setRotationX(float fRotaionX);

virtual float getRotationX();

virtual void setRotationY(float fRotationY);

virtual float getRotationY();

设置旋转角度

virtual void setOrderOfArrival(unsigned int uOrderOfArrival);

virtual unsigned int getOrderOfArrival();

设置arrival order,当两个node有相同的zorder时,按照arrival order次序来绘画

virtual void addChild(CCNode * child);

virtual void addChild(CCNode * child, int zOrder);

virtual void addChild(CCNode* child, int zOrder, int tag);

增加子节点,可以在增加子节点时,设定zOrder和tag

CCNode * getChildByTag(int tag);

virtual CCArray* getChildren();

virtual void setParent(CCNode* parent);

unsigned int getChildrenCount(void) const;

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);

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;

virtual void setTag(int nTag);

设置标签,每个node可以有一个标签,用于标示这个节点

virtual void* getUserData();

virtual void setUserData(void *pUserData);

每个node可以设置void*的自定义数据,这个数据可以用来关联其他系统,比如物理系统对象

virtual CCObject* getUserObject();

virtual void setUserObject(CCObject *pUserObject);

设置关联的对象,和UserData类似,只是指针类型不同

virtual CCGLProgram* getShaderProgram();

virtual void setShaderProgram(CCGLProgram *pShaderProgram);

设置着色器

virtual CCCamera* getCamera();

获取照相机对象

virtual bool isRunning();

是否在运行,运行的意思是节点接受事件回调函数,如OnEnter, OnExit, update等

virtual void registerScriptHandler(int handler);

virtual void unregisterScriptHandler(void);

inline int getScriptHandler() { return m_nScriptHandler; };

注册lua函数处理OnEnter,OnExit

void scheduleUpdateWithPriorityLua(int nHandler, int priority);

定时回调lua脚本函数

virtual void onEnter();

virtual void onEnterTransitionDidFinish();

virtual void onExit();

virtual void onExitTransitionDidStart();

进入和退出Scene的回调函数,onEnterTransitionDidFinish是在场景切换有动画时,动画结束后的回调,onExitTransitionDidStart类似

virtual void cleanup(void);

停止所有的schedule和actions

virtual void draw(void);

绘制node

virtual void visit(void);

绘制所有儿子节点

CCRect boundingBox(void);

获取节点矩形,该矩形的坐标基于父节点

virtual void setActionManager(CCActionManager* actionManager);

virtual CCActionManager* getActionManager();

设置Action管理器,动画管理器管理这个node的所有动画

CCAction* runAction(CCAction* action);

让node执行动作,这个node也成了action的target,通过action->getTarget可以获取这个node

注意action并没有增加node的内存计数器

void stopAllActions(void);

void stopAction(CCAction* action);

void stopActionByTag(int tag);

停止action

CCAction* getActionByTag(int tag);

获取action

unsigned int numberOfRunningActions(void);

返回正在运行的action个数

virtual void setScheduler(CCScheduler* scheduler);

virtual CCScheduler* getScheduler();

设置调度器

bool isScheduled(SEL_SCHEDULE selector);

检查函数selector是否被调度

void scheduleUpdate(void);

调度update函数

void scheduleUpdateWithPriority(int priority);

有优先级的调度,priority越小,越先被调度

void unscheduleUpdate(void);

取消调度

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);

定时调度,delay是多少时间后,interval是两次调度之间间隔多少时间,repeat是重复次数

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);

void setAdditionalTransform(const CCAffineTransform& additionalTransform);

CCPoint convertToNodeSpace(const CCPoint& worldPoint);

CCPoint convertToWorldSpace(const CCPoint& nodePoint);

CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);

CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint);

坐标转换,从世界坐标转到本地坐标(节点坐标),AR结尾序列式转化时以锚点为原点

CCPoint convertTouchToNodeSpace(CCTouch * touch);

CCPoint convertTouchToNodeSpaceAR(CCTouch * touch);

将CCTouch转换成节点坐标

CCComponent* getComponent(const char *pName) const;

virtual bool addComponent(CCComponent *pComponent);

virtual bool removeComponent(const char *pName);

virtual void removeAllComponents();

组件管理,类似userData,但是组件可以增加很多

你可能感兴趣的:(cocos2dx进阶学习之CCNode)