继承关系

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

可重载的update函数

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

OpenGL的矩阵坐标转换

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的更多相关文章

  1. cocos2dx进阶学习之CCScene

    继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...

  2. cocos2dx进阶学习之CCAction

    CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...

  3. cocos2dx进阶学习之CCTMXTiledMap

    继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...

  4. cocos2dx进阶学习之场景切换

    背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...

  5. cocos2dx进阶学习之CCSprite

    继承关系 CCSprite -> CCNodeRGBA       ->   CCNode, CCRGBAProtocol CCTextureProtocol 从继承关系可以看出,CCSp ...

  6. cocos2dx进阶学习之CCLayer

    继承关系 CCLayer -> CCNode,CCTouchDelegate,CCAccelerometerDelegate,CCKeypadDelegate CCLayer在cocos2dx中 ...

  7. cocos2dx进阶学习之坐标转换

    在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原 ...

  8. cocos2dx进阶学习之CCDirector

    继承关系 CCDirecotor -> CCObject, TypeInfo 处理主窗口消息,管理何时.何种方式执行场景. 经常被翻译成导演,负责管理整个游戏的进程推动和周边支持. 成员 inl ...

  9. cocos2dx进阶学习之屏幕适配

    背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...

随机推荐

  1. 【中英对照】【EntLib6】【Unity】实验1:使用一个Unity容器

    Lab 1: Using a Unity Container 实验1:使用一个Unity容器 Estimated time to complete this lab: 15 minutes 估计完成时 ...

  2. raphael入门到精通---入门篇之总览

    什么是Raphael raphael.js是一小巧的javascript库,它可以在web上画矢量图简化你的工作,如果你想创建你指定的图表,图形区域或者可移动的组件,那么就使用raphael吧 话不多 ...

  3. PKU POJ 1006 Biorhythms (中国剩余定理)

    中国剩余定理 x = ai (mod mi)  ai和mi是一组数,mi两两互质,求x 令Mi = m1*m2*~mk     其中,mi不包含在内. 因为mi两两互质,所以存在x和y, st   M ...

  4. C#高级编程技术复习一

    从基本的Socket编程进入 (注意:这是转的一篇2011年的文章,有些知识可能该更新了!) 这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Soc ...

  5. ajax 上传图片 并预览

     <img {if !$article[pic]}style="display: none"{/if} width="82" height="6 ...

  6. C++中引用

    在C语言中&这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法.一.引用简介 引用就是某一变量(目标)的一个 ...

  7. Windows10笔记本双显卡导致的启动黑屏解决办法之一

    参考链接:http://www.zhihu.com/question/33662311 大概就是关掉ulps. ulps,显卡的多核心超低功率状态,节能用的,AMD出的双显卡的一种节能方案.不过,与某 ...

  8. Xamarin几十篇博客,roslyn和dotnet也开源了

    .Net 基金会 http://www.dotnetfoundation.org/ 更新的真快,刚打完2的补丁包,3就粗来了............ https://www.visualstudio. ...

  9. Android自定义控件(36篇)

    http://blog.csdn.net/lmj623565791/article/details/44278417 http://download.csdn.net/user/lmj62356579 ...

  10. nginx启动、开机自启动、重启、关闭

    yum -y  install nginx # yum info nginx Loaded plugins: fastestmirror Loading mirror speeds from cach ...