Cocos2d-x基础:CCNode
2013-08-24 18:20
204 查看
CCNode的特点:
1、它能够有子节点
2、它能处理有周期性的回调函数
3、它能执行CCAction动作
任何在cocos2d-x中可以看见的对象都是CCNode,并且任何看不见的,但是拥有坐标的对象都是CCNode。
在cocos2d-x中,CCObject无处不在,其实CCObject只是提供生命而已,真正无处不在的是CCNode!它组织了整个cocos2d-x程序的树形结构,有利于管理和画面渲染等。
在上面,我们有一句定义CCNode的话,但是那些CCNode是指的CCScene, CCLayer, CCSprite, CCMenu。CCNode本身是不会直接被使用的,除非有特殊要求。CCNode自己没有贴图功能,我看不见的一个对象。它的作用很直接:为Cocos2d-x提供了一个显示对象的管理方法----树形结构。
我们只是学会使用Cocos2d-x就够了,因此涉及到复杂的实现就不管了。
中见有些方法暂时没必要看
CCNode还提供了坐标系的操作。(这是当然的,因为CCNode是显示对象)
坐标系的转换一般会涉及到两个方法,那就是世界坐标系和节点坐标系的转换。
1、世界坐标系
2、节点坐标系(本地坐标系)(根节点与OpenGL坐标系相同)
3、OpenGL坐标系
1、它能够有子节点
2、它能处理有周期性的回调函数
3、它能执行CCAction动作
任何在cocos2d-x中可以看见的对象都是CCNode,并且任何看不见的,但是拥有坐标的对象都是CCNode。
在cocos2d-x中,CCObject无处不在,其实CCObject只是提供生命而已,真正无处不在的是CCNode!它组织了整个cocos2d-x程序的树形结构,有利于管理和画面渲染等。
在上面,我们有一句定义CCNode的话,但是那些CCNode是指的CCScene, CCLayer, CCSprite, CCMenu。CCNode本身是不会直接被使用的,除非有特殊要求。CCNode自己没有贴图功能,我看不见的一个对象。它的作用很直接:为Cocos2d-x提供了一个显示对象的管理方法----树形结构。
我们只是学会使用Cocos2d-x就够了,因此涉及到复杂的实现就不管了。
virtual bool init(); // 初始化一个节点 CCNode * CCNode::create(void); // 使用静态方法创建一个新的节点,并设置自动释放(autoRelease) const char* CCNode::description(); // 获得CCNode的Tag virtual void setZOrder(int zOrder); // 设置节点z值(显示的前后关系),并记录这个节点所在父节点中的位置 virtual void _setZOrder(int z); // 设置z值 virtual int getZOrder(); // 获得z值 virtual void setScaleX(float fScaleX); // X坐标上的缩放 virtual float getScaleX(); virtual void setScaleY(float fScaleY); // Y坐标上的缩放 virtual float getScaleY(); virtual void setScale(float scale); // 整体的缩放 virtual float getScale(); virtual void setPosition(const CCPoint &position); // 设置节点在OpenGL坐标系中的坐标(左下角是0,0) virtual const CCPoint& getPosition(); void setPositionX(float x); float getPositionX(void); void setPositionY(float y); float getPositionY(void); virtual void setSkewX(float fSkewX); // 设置X方向的扭曲 virtual float getSkewX(); virtual void setSkewY(float fSkewY); // 设置Y方向的扭曲 virtual float getSkewY(); virtual void setAnchorPoint(const CCPoint& anchorPoint); // 锚点 virtual const CCPoint& getAnchorPoint(); virtual void setContentSize(const CCSize& contentSize); // 设置节点的大小 virtual const CCSize& getContentSize(); 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); // 如果有多个子节点的Z值相等,那么设置这个值,数值越小,绘制越前。 virtual unsigned int getOrderOfArrival(); virtual void setGLServerState(ccGLServerState glServerState); // Sets the state of OpenGL server side。。。。。。。。暂时不理解 virtual ccGLServerState getGLServerState(); virtual void ignoreAnchorPointForPosition(bool ignore); // 设置“忽略锚点的坐标”,锚点坐标设置为(0,0) virtual bool isIgnoreAnchorPointForPosition(); 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(); // 获得所有子节点,并保存在CCArray中 unsigned int getChildrenCount(void); // 获得子节点的数量 virtual void setParent(CCNode* parent); // 设置父节点 virtual CCNode* getParent(); virtual void removeFromParent(); // 把自己从父节点中移除 virtual void removeFromParentAndCleanup(bool cleanup); // 把自己从父节点中移除,如果为ture,则停止这个节点的所有动作和回调 virtual void removeChild(CCNode* child); // 移除子节点,并清理 virtual void removeChild(CCNode* child, bool cleanup); // 移除子节点,并判断是否进行清理 irtual void removeChildByTag(int tag); virtual void removeChildByTag(int tag, bool cleanup); virtual void removeAllChildren(); // 移除所有子节点,并清理 virtual void removeAllChildrenWithCleanup(bool cleanup); // 移除所有子节点,ture则清理所有节点 virtual void reorderChild(CCNode * child, int zOrder); // 设置子节点的Z值 virtual void sortAllChildren(); // 绘制之前对子节点进行排序,可以提高性能。但不要手动受使用,除非在一帧内,一个子节点被添加再被移除。
中见有些方法暂时没必要看
当节点每次进入舞台时被调用,如果子类要重写,方法中必须加上CCNode::onEnter() virtual void onEnter(); OnEnter调用之后,方法中必须加上CCNode::onEnterTransitionDidFinish() virtual void onEnterTransitionDidFinish(); 当节点每次离开舞台后被调用,如果子类要重写,方法中必须加上CCNode::onExit() virtual void onExit(); 当节点离开舞台时调用,如果子类要重写,方法中必须加上CCNode::onExit() virtual void onExitTransitionDidStart();
virtual void draw(void); 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); // 是否定时器已经被调用 void unscheduleUpdate(void); //取消定时器 void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); // 自定义一个定时器,每隔interval在delat时间后调用repeat+1次 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); // 每帧调用一次,前提是scheduleUpdate()被调用
CCNode还提供了坐标系的操作。(这是当然的,因为CCNode是显示对象)
坐标系的转换一般会涉及到两个方法,那就是世界坐标系和节点坐标系的转换。
1、世界坐标系
2、节点坐标系(本地坐标系)(根节点与OpenGL坐标系相同)
3、OpenGL坐标系
相关文章推荐
- cocos2d-x基础(一)CCNode
- cocos2d-x-lua基础系列教程一(hello lua)
- 【基础】Cocos2d-x 浅谈动作Action
- Cocos2d-JS项目之二:studio基础控件的使用
- Cocos2d-x中的基础概念学习笔记 分类: cocos2d代码编写 2015-07-27 17:08 5人阅读 评论(0) 收藏
- Cocos2d-x基础环境搭建
- 零基础学Cocos2d-X 3.0 - 03
- cocos2d-x基础学习--编写自己的精灵类
- Cocos2d-x基础: CCProgressTimer的使用
- 【Cocos2d-Js基础教学(5)资源打包工具的使用及资源的异步加载处理】
- 【Cocos2d-x】开发基础-Node与Node层级架构
- cocos2d-x 基础概念介绍--导演 场景 层 精灵
- cocos2d基础知识
- Cocos2d iPhone基础教程 part 2
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- cocos2d-x游戏开发(九)重要的基类CCNode
- Cocos2d-x 3.0 中文基础教程-精灵帧缓存(SpriteFrameCache)
- cocos2d-js 开发基础练习代码(1)——熟悉场景加载,精灵,动画使用等
- wp7使用Cocos2d-X for XNA制作一个塔防类游戏 (一)游戏基础场景搭建
- Cocos2d-x基础实例1-放置精灵