繼承關系
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();