[cocos2dx]重要父类——CCNode节点类
2015-07-18 19:13
501 查看
概述
节点类CCNode可以说是游戏元素的祖宗了,基本上我们看得到的游戏元素都是以它为原型进行扩展的。像CCScene,CCLayer,CCSprite,CCMenu,CCParticleBatchNode等等都是从CCNode继承而来。另外如果我们要自定义精灵,那么从CCNode继承也是一个很不错的选择。CCNode直接从CCObject继承而来,有如下几个特点:
可以包含其他CCNode节点,可以进行添加/获取/删除子节点操作。
可以执行周期性的回调任务。
可以执行动作。
一些子类化的节点提供了更为丰富的特性和功能。
属性
Features of CCNode: - position //位置,默认(0,0) - scale (x, y) //缩放,默认(1,1) - rotation (in degrees, clockwise) //旋转,默认为0 - skew //倾斜,默认为0 - CCCamera (an interface to gluLookAt ) //CCCamera,视点转换,每个节点都有,默认指向节点中心 - CCGridBase (to do mesh transformations) //CCGridBase,网类转变 - anchor point //锚点,默认(0,0) - size //尺寸,默认(0,0) - visible //可见 - z-order //z轴值 - openGL z position //OpenGL z值
初始化
//初始化函数,成功返回truevirtual bool init();
//分配内存空间,调用init并添加autoRelease标记
static CCNode * create(void);
//返回描述字符串
const char* description(void);
图形属性
//设置/获取Z轴顺序,Z轴大的覆盖Z轴小的 virtual void setZOrder(int zOrder); virtual void _setZOrder(int z); virtual int getZOrder(); //设置/获取OpenGL Z轴顶点 virtual void setVertexZ(float vertexZ); virtual float getVertexZ(); //设置/获取缩放值 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(); virtual const CCPoint& getAnchorPointInPoints(); //设置/获取大小 virtual void setContentSize(const CCSize& contentSize); virtual const CCSize& getContentSize() const; //设置/获取可见性 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();
节点操作
//添加/获取子节点,可以带Z轴顺序(默认为0)和标签 virtual void addChild(CCNode * child); virtual void addChild(CCNode * child, int zOrder); virtual void addChild(CCNode* child, int zOrder, int tag); CCNode * getChildByTag(int tag); virtual CCArray* getChildren(); unsigned int getChildrenCount(void) const; //设置/获取父节点 virtual void setParent(CCNode* parent); virtual CCNode* getParent(); //从父节点中移除自身,默认cleanup为true 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);
标签和用户数据
//设置/获取tag virtual int getTag() const; virtual void setTag(int nTag); //设置/获取userdata,它是一个指针可以指向你想要的任意数据块,不过记得要释放 virtual void* getUserData(); virtual void setUserData(void *pUserData); //设置/获取CCObject,和上面一样,只是数据换成了CCObject对象 virtual CCObject* getUserObject(); virtual void setUserObject(CCObject *pUserObject);
事件回调
//节点开始进入触发 virtual void onEnter(); //节点完成进入触发 virtual void onEnterTransitionDidFinish(); //节点退出触发 virtual void onExit(); //如果节点退出有过渡动画,动画开始时触发 virtual void onExitTransitionDidStart(); //停止动画和调度器 virtual void cleanup(void);
动作
//获取/设置动作管理器 virtual void setActionManager(CCActionManager* actionManager); virtual CCActionManager* getActionManager(); //运行动作 CCAction* runAction(CCAction* action); //停止动作 void stopAllActions(void); void stopAction(CCAction* action); void stopActionByTag(int tag); CCAction* getActionByTag(int tag); //获取正在运行动作数 unsigned int numberOfRunningActions(void);
调度器和定时器
//获取/设置调度器 virtual void setScheduler(CCScheduler* scheduler); virtual CCScheduler* getScheduler(); //检测某个调度器是否有在运行 bool isScheduled(SEL_SCHEDULE selector); //开启update调度 void scheduleUpdate(void); //设置调度优先级 void scheduleUpdateWithPriority(int priority); //关闭update调度器 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); void resumeSchedulerAndActions(void); void pauseSchedulerAndActions(void); //每帧调用函数 virtual void update(float delta);
坐标转换
//坐标转换相关,这一部分后面再介绍 CCPoint convertToNodeSpace(const CCPoint& worldPoint); CCPoint convertToWorldSpace(const CCPoint& nodePoint); CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint); CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint); CCPoint convertTouchToNodeSpace(CCTouch * touch); CCPoint convertTouchToNodeSpaceAR(CCTouch * touch);
其他
//获取/设置着色程序virtual CCGLProgram* getShaderProgram();
virtual void setShaderProgram(CCGLProgram *pShaderProgram);
//获取CCCamera对象
virtual CCCamera* getCamera();
//节点是否在运行
virtual bool isRunning();
//绘制节点
virtual void draw(void);
//递归访问节点
virtual void visit(void);
//返回所占矩形,节点坐标系
CCRect boundingBox(void);
Node API详解
相关文章推荐
- 【Cocos2d-x】CCArray
- Cocos2d-x中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
- cocos2dx 使用spine制作骨骼动画
- (4)cocos2dx读取csv数据文件
- cocos2dx的图片加载
- cocos 关于文件名的各种坑 各种斜杠坑
- Cocos-js 之 使用Chipmunk实现碰撞 和 碰撞的监听
- COCOS2D 释放资源的最佳时机
- cocos2d-x添加虚拟键盘获得用户输入CCTextField实例
- 【Cocos2d-x】 Cocos2d-x 3.X 异步加载plist图片资源
- 基于cocos2dx的飞机大战学习[五]-添加三种敌机
- Cocos-js 之 使用Chipmunk实现碰撞 和 碰撞的监听
- Cocos2d-x3.4 EditBox的问题
- cocos2d 3.X Shader 变暗和变灰
- 【Cocos2d-x】CCNode
- cocos2dx翻牌效果示例
- Cocos2d Android 环境搭建
- cocos2d-x物业现场
- Cocos2d-X lua 学习笔记之划屏拖尾特效
- (cocos2dx)使用__Array容器检测碰撞时间