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);
可重载的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的更多相关文章
- cocos2dx进阶学习之CCScene
继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...
- cocos2dx进阶学习之CCAction
CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...
- cocos2dx进阶学习之CCTMXTiledMap
继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...
- cocos2dx进阶学习之场景切换
背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...
- cocos2dx进阶学习之CCSprite
继承关系 CCSprite -> CCNodeRGBA -> CCNode, CCRGBAProtocol CCTextureProtocol 从继承关系可以看出,CCSp ...
- cocos2dx进阶学习之CCLayer
继承关系 CCLayer -> CCNode,CCTouchDelegate,CCAccelerometerDelegate,CCKeypadDelegate CCLayer在cocos2dx中 ...
- cocos2dx进阶学习之坐标转换
在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原 ...
- cocos2dx进阶学习之CCDirector
继承关系 CCDirecotor -> CCObject, TypeInfo 处理主窗口消息,管理何时.何种方式执行场景. 经常被翻译成导演,负责管理整个游戏的进程推动和周边支持. 成员 inl ...
- cocos2dx进阶学习之屏幕适配
背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...
随机推荐
- hdu 4738 Caocao's Bridges(2013杭州网络赛丶神坑)
就是求最小权值的桥..不过有好几个坑... 1:原图不连通,ans=0. 2: m<=n^2 显然有重边,重边必然不是桥,处理重边直接add(u, v, INF). 3: 最小桥边权为0的时 ...
- OpenStack里的浮动ip
缺省情况下实例会被赋予固定ip,这时并不能保证实例会马上可以从外面访问到,一般来说需要配置防火墙来允许公共ip,然后建立一条NAT规则从公共ip到私有ip的映射.OpenStack引入了一个叫浮动ip ...
- iOS 技能集结号
1. 获取磁盘总空间大小 2. 获取磁盘可用空间大小 3. 获取指定路径下某个文件的大小 4. 获取文件夹下所有文件的大小 5. 获取字符串(或汉字)首字母 6. 将字符串数组按照元素首字母顺序进行排 ...
- 枚举与define的区别
1.枚举enum的用途浅例 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等. ...
- UVa12563(DP)
题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路来求,每个歌曲相当于物品,歌曲的长度相等于物品重量,每个歌曲的“价值”为 ...
- 5.4.3 RegExp构造函数属性
RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性).这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化.关于这些属性的另一个独特之处,就是可以通 ...
- 高质量程序设计指南C/C++语言——C++/C常量(2)
- python下读取excel文件
项目中要用到这个,所以记录一下. python下读取excel文件方法多种,用的是普通的xlrd插件,因为它各种版本的excel文件都可读. 首先在https://pypi.python.org/py ...
- ALV列、行、单元格颜色设置
)颜色含义 :海蓝:2:浅清:3:黄色:4:浅蓝:5:青色:6:红色:7:橙色. (1)首位为主颜色: (2)次位为辅助颜色: (3)末位为0时,表示首位数字表为表格的底色: 末位为1时,则表示以1为 ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...