zoukankan      html  css  js  c++  java
  • [cocos2dx] CCNode类详解

    Cocos2d-x学习交流群:140326755 

    Email : hahayacoder@gmail.com

    1 CCNodecocos2d-x中一个很重要的类,CCNode是场景、层、菜单、精灵等的父类。而我们在使用cocos2d-x时,接触最多的就是场景、层、菜单、精灵等。所以有必要先弄懂CCNode

     

    2 CCObject类是cocos2d-x中所有对象的基类,CCObject封装了对象的引用计数和自动释放功能,下面是类图

    3 因为场景、层、精灵、菜菜单是CCNode的子类,所以在使用它们时,有些方法来自CCNode,下面解释了CCNode中常用的方法

    //初始化CCNode
    bool init();
    
    //生成CCNode对象
    CCNode * create(void);
    
    //获取描述字符串 便于调试
    const char* description(void);
    
    //设置节点Z轴顺序 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的
    void setZOrder(int zOrder);
    void _setZOrder(int z);
    //获取节点Z轴顺序
    int getZOrder();
    
    //设置OpenGL Z轴顶点
    void setVertexZ(float vertexZ);
    //获取OpenGL Z轴顶点
    float getVertexZ();
    
    //设置节点X轴比例因子
    void setScaleX(float fScaleX);
    //获取节点X轴比例因子
    float getScaleX();
    
    //设置节点Y轴比例因子
    void setScaleY(float fScaleY);
    //获取节点Y轴比例因子
    float getScaleY();
    
    //设置节点比例因子 同时设置X轴、Y轴
    void setScale(float scale);
    //获取节点比例因子 必须X轴、Y轴比例因子相等
    float getScale();
    
    //设置节点(x, y)在OpenGL中的坐标 
    void setPosition(const CCPoint &position);
    //获取节点(x, y)在OpenGL中的坐标 
    const CCPoint& getPosition();
    
    //设置节点(x, y)在OpenGL中的坐标
    void setPosition(float x, float y);
    //获取节点(x, y)在OpenGL中的坐标
    void getPosition(float* x, float* y);
    
    //设置节点在OpenGL中的X坐标
    void setPositionX(float x);
    //获取节点在OpenGL中的X坐标
    float getPositionX(void);
    //设置节点在OpenGL中的Y坐标
    void setPositionY(float y);
    //获取节点在OpenGL中的Y坐标
    float getPositionY(void);
    
    //设置X轴的倾斜角度
    void setSkewX(float fSkewX);
    //获取X轴的倾斜角度
    float getSkewX();
    
    //设置Y轴的倾斜角度
    void setSkewY(float fSkewY);
    //获取Y轴的倾斜角度
    float getSkewY();
    
    //设置节点锚点的位置
    void setAnchorPoint(const CCPoint& anchorPoint);
    //获取节点锚点的位置
    const CCPoint& getAnchorPoint();
    
    //设置节点的尺寸
    void setContentSize(const CCSize& contentSize);
    //获取节点的尺寸
    const CCSize& getContentSize();
    
    //设置节点是否可见
    void setVisible(bool visible);
    //获取节点是否可见
    bool isVisible();
    
    //设置节点自转角度
    void setRotation(float fRotation);
    //获取节点自转角度
    float getRotation();
    
    //zOrder 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的
    //添加子节点 zOrder默认为0
    void addChild(CCNode * child);
    //添加子节点
    void addChild(CCNode * child, int zOrder);
    //添加子节点 指定节点zOrder和节点tag
    void addChild(CCNode* child, int zOrder, int tag);
    
    //通过tag名称获取节点
    CCNode * getChildByTag(int tag);
    //获取所有子节点
    CCArray* getChildren();
    //获取子节点数目
    unsigned int getChildrenCount(void);
    
    //设置子节点的父节点
    void setParent(CCNode* parent);
    //获取子节点的父节点
    CCNode* getParent();
    
    //从父节点中删除当前子节点
    void removeFromParent();
    //从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作及回调函数
    void removeFromParentAndCleanup(bool cleanup);
    //从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作
    void removeChild(CCNode* child);
    //从父节点中删除当前子节点 并指定Cleanup
    void removeChild(CCNode* child, bool cleanup);
    //通过tag名称移除节点
    void removeChildByTag(int tag);
    //通过tag名称移除节点并指定Cleanup
    void removeChildByTag(int tag, bool cleanup);
    //移除所有子节点
    void removeAllChildren();
    //移除所有子节点 并指定Cleanup
    void removeAllChildrenWithCleanup(bool cleanup);
    
    //重新设定节点的zOrder
    void reorderChild(CCNode * child, int zOrder);
    
    //重新排序所有子节点
    void sortAllChildren();
    
    //获取节点的tag名称
    int getTag();
    //设置节点的tag名称
    void setTag(int nTag);
    
    //获取节点的CCCamera摄像机 cocos2d-x是通过3D方式绘制2D效果
    CCCamera* getCamera();
    
    //判断当前节点是否在运行
    bool isRunning();
    
    //节点开始进入舞台时的回调事件
    void onEnter();
    //节点进入舞台时的回调事件
    void onEnterTransitionDidFinish();
    //节点离开舞台时的回调事件
    void onExit();
    
    //停止所有运行的动作和回调函数
    void cleanup(void);
    
    //绘制节点
    void draw(void);
    
    //递归visit子节点并重绘
    void visit(void);
    
    //返回节点对象的矩形框(由坐标宽高组成)
    CCRect boundingBox(void);
    
    //设置CCActionManager对象被所有动作使用
    void setActionManager(CCActionManager* actionManager);
    //获取被所有动作使用的CCActionManger
    CCActionManager* getActionManager();
    
    //执行动作
    CCAction* runAction(CCAction* action);
    //停止动作
    stopAction(CCAction* action);
    
    
    //停止所有动作
    void stopAllActions(void);
    
    //通过tag名称获取动作
    CCAction* getActionByTag(int tag);
    
    //获取正在运行的动作数量
    unsigned int numberOfRunningActions(void);
    
    //定义一个定时器
    void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay);
    //定义一个定时器
    void schedule(SEL_SCHEDULE selector, float interval);
    
    //取消一个定时器
    void unschedule(SEL_SCHEDULE selector);
    //取消所有定时器
    void unscheduleAllSelectors(void);
    
    //暂停所有定时器和动作
    void pauseSchedulerAndActions(void);
    //恢复所有定时器和动作
    void resumeSchedulerAndActions(void);
    


     

  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3002694.html
Copyright © 2011-2022 走看看