1. 程式人生 > >Cocos2D-x權威指南: CCNode類方法:

Cocos2D-x權威指南: CCNode類方法:

5.1.4 繪圖節點CCNode和圖層CCLayer

CCNode中提供的方法,在public塊中的方法主要有以下幾個部分:

1、針對節點顯示的屬性資訊讀寫

2、針對節點變換的屬性資訊讀寫

3、針對子節點的管理相關方法

4、針對節點資料繫結的相關方法

5、針對節點生命週期的相關方法

6、針對節點處理動作CCAction的相關方法

7、針對節點定時任務的相關方法

8、針對節點座標變換的相關方法在CCNode中的節點都有自己的座標系,稱為節點座標系,當節點座標系變換後該節點的所有子節點都會隨之變換。

節點在新增到場景時會參考節點的錨點,錨點預設定義為該節點的中心,在貼圖時候會以錨點為中心,改變錨點並沒有改變節點的位置,只是改變了貼圖的位置。

Cocos2d-x中的世界座標系和openGL座標系一致,左下角為0,0點,x軸向右,y軸向上。

CCScene類是CCNode類的子類。和CCNode相比,它只是多了自己的錨點,在螢幕的中間位置。

CCLayer也是CCNode的子類,相比CCNode增加了使用者的互動功能。

class CC_DLL CCNode : public CCObject  
{  
public:  
    CCNode(void);  
    virtual ~CCNode(void);  
    virtual bool init();            //初始化節點  
    static CCNode * create(void);   //建立節點物件  
    const char* description(void);  
    virtual void setZOrder(int zOrder);    //設定節點Z軸排序  
    virtual void _setZOrder(int z);  
    virtual int getZOrder();  
    virtual void setVertexZ(float vertexZ);//設定Z座標  
    virtual float getVertexZ();  
    virtual void setScaleX(float fScaleX); //設定X軸縮放係數(0-1)  
    virtual float getScaleX();  
    virtual void setScaleY(float fScaleY); //設定Y軸縮放係數  
    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  setPositionX(float x);  
    virtual float getPositionX(void);  
    virtual void  setPositionY(float y);  
    virtual 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 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);//設定X軸旋轉角度  
    virtual float getRotationX();  
    virtual void setRotationY(float fRotationY);//設定Y軸旋轉角度  
    virtual float getRotationY();  
 
    //當節點的ZOrder相同時,使用該值做以區分  
    virtual void setOrderOfArrival(unsigned int uOrderOfArrival);  
    virtual unsigned int getOrderOfArrival();  
    //設定GLServer狀態  
    virtual void setGLServerState(ccGLServerState glServerState);  
    //獲取GLServer狀態  
    virtual ccGLServerState getGLServerState();  
    //設定是否忽略錨點位置  
    virtual void ignoreAnchorPointForPosition(bool ignore);  
    //獲取是否忽略錨點位置  
    virtual bool isIgnoreAnchorPointForPosition();  
    virtual void addChild(CCNode * child);  //新增子節點  
    virtual void addChild(CCNode * child, int zOrder);  
    virtual void addChild(CCNode* child, int zOrder, int tag);  
    virtual CCArray* getChildren(); //獲取所有子節點  
    virtual void setParent(CCNode* parent); //設定父節點  
    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);  //移除某個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;    //獲取當前節點的Tag  
    virtual void setTag(int nTag); //設定當前節點的Tag  
    virtual void* getUserData();   //獲取使用者資料  
    virtual void setUserData(void *pUserData); //設定使用者資料  
    virtual CCObject* getUserObject();        //獲取使用者資料物件  
    virtual void setUserObject(CCObject *pUserObject); //設定使用者資料物件  
    virtual CCGLProgram* getShaderProgram(); //獲取Shader程式  
    virtual void setShaderProgram(CCGLProgram *pShaderProgram);  
    virtual CCCamera* getCamera();        //獲取攝像機物件  
    virtual bool isRunning();             //獲取當前Node是否在執行  
    virtual void registerScriptHandler(int handler); //註冊指令碼Handler  
    virtual void unregisterScriptHandler(void);  
    inline int getScriptHandler() { return m_nScriptHandler; };  
    //執行Lua指令碼計劃任務  
    void scheduleUpdateWithPriorityLua(int nHandler, int priority);  
    virtual void onEnter() ;                   //進入節點物件  
    virtual void onEnterTransitionDidFinish(); //進入節點動畫完成  
    virtual void onExit();                     //離開節點物件  
    virtual void onExitTransitionDidStart();   //離開節點動畫完成  
    virtual void cleanup(void);                //停止所有動畫和排程  
    virtual void draw(void);                   //繪圖,渲染當前節點函式  
    virtual void visit(void);                  //遞迴遍歷當前節點樹  
    CCRect boundingBox(void);                  //返回節點區域  
    //設定當前節點的ActionManager  
    virtual void setActionManager(CCActionManager* actionManager);  
    virtual CCActionManager* getActionManager();  
    CCAction* runAction(CCAction* action);     //讓當前節點執行動作  
    void stopAllActions(void);                 //停止所有動作  
    void stopAction(CCAction* action);         //停止某一個動作  
    void stopActionByTag(int tag);             //停止標記為tag的動作  
    CCAction* getActionByTag(int tag);         //獲取標記為tag的動作  
    unsigned int numberOfRunningActions(void); //返回繫結該節點的動作數  
    virtual void setScheduler(CCScheduler* scheduler); //設定工作管理員  
    virtual CCScheduler* getScheduler();               //獲取工作管理員  
    bool isScheduled(SEL_SCHEDULE selector);        //是否執行了某個任務  
    void scheduleUpdate(void);                  //執行定時呼叫任務update  
    //按照指定優先順序執行update任務  
    void scheduleUpdateWithPriority(int priority);   
    void unscheduleUpdate(void); //停止update任務  
   //指定按照的時間間隔和等待時間,指定次數執行某個任務  
    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);        //定時任務回撥方法  
   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);  
    //轉化為節點空間座標,相對於節點左下角,與錨點無關  
    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);  
    //設定變換  
    void setAdditionalTransform(const CCAffineTransform&   
                                         additionalTransform);  
    //獲取元件  
    CCComponent* getComponent(const char *pName) const;  
    //新增元件   
    virtual bool addComponent(CCComponent *pComponent);  
    //移除元件  
    virtual bool removeComponent(const char *pName);  
    //移除所有元件  
    virtual void removeAllComponents();  
    private:  
    void childrenAlloc(void);  
    void insertChild(CCNode* child, int z);  
    void detachChild(CCNode *child, bool doCleanup);  
    CCPoint convertToWindowSpace(const CCPoint& nodePoint);  
......  
}