zoukankan      html  css  js  c++  java
  • 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,但是组件可以增加很多


  • 相关阅读:
    Java关键字static、final使用小结
    JAVA的核心概念:接口(interface)
    Oracle数据泵导入导出数据,建立表空
    web.xml中load-on-startup的作用
    UIApplication 用法解析
    ios-Ineligible Devices 不被识别的设备
    Xcode真机测试could not find developer disk image解决方法
    异常捕获拒绝闪退 让应用从容的崩溃UncaughtExceptionHandler
    Xcode6之后创建Pch预编译文件
    MBProgressHUD的基本使用
  • 原文地址:https://www.cnblogs.com/new0801/p/6177225.html
Copyright © 2011-2022 走看看