Cocos2D-x權威指南: CCNode類方法:
阿新 • • 發佈:2019-02-11
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); ...... }