继承关系

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. [每日一题] OCP1z0-047 :2013-08-22 正则表达式---[^Ale|ax.r$]'

    正确答案:DE 一.Oracle正则表达式的相关知识点 '[^Ale|ax.r$]': ^:匹配行的开始字符 $:匹配行的结束字符 []:方括号表示指定一个匹配列表,该列表匹配列表中显示的任何表达式. ...

  2. CV_EXPORTS定义及作用

    CV_EXPORTS 常用如下: class CV_EXPORTS MatExpr; template<typename _Tp> class CV_EXPORTS Size_; CV_E ...

  3. 使用iscroll4可能会遇到的问题(转:记录)

    1.在iscroll4的滚动容器范围内,点击input框.select等表单元素时没有响应这个问题原因在于iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件 ...

  4. 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)

    申明:此文为转载(非原创),文章分析十分透彻,已添加原文链接,如有任何侵权问题,请告知,我会立即删除. 第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大 ...

  5. python列表元组

    python列表元组 索引 切片 追加 删除 长度 循环 包含   定义一个列表 my_list = []     my_list = list()   my_list = ['Michael', ' ...

  6. oracle整体知识的大致介绍(1)-概念

    表空间: oracle允许不同类型的数据分开存放,表空间是数据库的逻辑划分. 数据文件: 表空间由同一磁盘上的一个或多个文件组成,这些文件叫做数据文件. 实例: 是存放和控制数据库的软件机制. ora ...

  7. Sublime 配置&插件推荐

    sublime 配置&插件推荐 Sublime编辑器的新鲜特性同时选中多个 先选中一个 再Command + D Command + P @搜索函数 #搜索关键字迷你地图 安装package ...

  8. 射频识别技术漫谈(14)——Mifare S50与S70的存取控制

    存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...

  9. 静态方法中为什么不能使用this

  10. Android PNG渐变背景图片失真问题 getWindow().setFormat(PixelFormat.RGBA_8888);

    最近一个困扰很久的问题,渐变效果的png图片,设置为控件图片或background时,在eclipse上看着没有什么问题,但是在设备上运行时,可以看到明显的一圈圈的轮廓线,图片严重失真.在网上goog ...