继承关系

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. cc2540 cc2541 低功耗实測和总结-与注意事项 - 低功耗小于10uA

    CC2541 CC2540 实现超低功耗是很重要的: 我们来总结一下实现方法: 1,有定时器在跑时会一直跑在  PM2  电流在  300uA左右.    没有定时器跑后会到 PM3 , 电流会少于1 ...

  2. SQL修炼道路上必看的书籍

    1 SQL应用重构 9787111263586 2 SQL 必知必会(第3版) 9787115162601 3 SQL Server 2005高级程序设计 9787115170798 4 SQL 解惑 ...

  3. CodeForces 577A Multiplication Table 质因子数

    题目:click here 题意:看hint就懂了 分析:数论小题,在n0.5时间里求n的质因子数 #include <bits/stdc++.h> using namespace std ...

  4. [Swust OJ 403]--集合删数

    题目链接:http://acm.swust.edu.cn/problem/403/ Time limit(ms): 5000 Memory limit(kb): 65535   Description ...

  5. POJ 2689 Prime Distance(素数筛选)

    题目链接:http://poj.org/problem?id=2689 题意:给出一个区间[L, R],找出区间内相连的,距离最近和距离最远的两个素数对.其中(1<=L<R<=2,1 ...

  6. VS2010/MFC对话框:非模态对话框的创建及显示

    非模态对话框的创建及显示 上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切 ...

  7. android TDD平台插入双卡时,查看允许返回发送报告的选项,去掉勾选,不起作用

    请在MultiSimPreferenceActivity.java 下修改 修改1: 函数 isChecked()     private boolean isChecked(String prefe ...

  8. 获取WebView里的网页文本内容

    获取WebView里的网页文本内容,能够採用例如以下方法: public class ComJSInterface { public void loadHtmlContent(String conte ...

  9. NS2 nam中节点及数据流颜色设置

    NS2 节点颜色设置在http://hi.baidu.com/jrwen0/item/d105c642f4c3ce36fb89601b说明的比較具体,大家能够參见. 我这里想说的是数据流颜色的设置,相 ...

  10. python命令行参数处理

    使用argparse包来解析命令行参数: #/usr/bin/python #encoding=utf-8 import argparse parser = argparse.ArgumentPars ...