原創作品,轉載請標明:http://blog.csdn.net/jackystudio/article/details/12770909
精靈也出來了,但是不會動的精靈是木有用的。。。CCAction就是負責來解決精靈運動的問題。
1.概況
CCAction直接從CCObject繼承而來,注意它代表的是一個動作,是動詞。精靈執行了這個動作,而不是名詞。CCAction本身並沒有什麼功能,主要是定義了一些通用函數和虛函數讓子類實現多態性。
2.接口
- //返回一個描述
- const char* description();
- //返回動作是否結束
- virtual bool isDone(void);
- //在動作開始前調用,需要設置目標精靈
- virtual void startWithTarget(CCNode *pTarget);
- //每幀調用,time在0~1之間,0代表動作剛開始,0.5代表動作執行一半,1代表動作結束
- virtual void update(float time);
- //返回/設置目標節點
- CCNode* getTarget(void);
- void setTarget(CCNode *pTarget);
- //獲取/設置上一個節點
- CCNode* getOriginalTarget(void);
- void setOriginalTarget(CCNode *pOriginalTarget);
- //獲取/設置標籤
- int getTag(void);
- void setTag(int nTag);
- //創建動作靜態方法
- static CCAction* create();
3.CCFollow
CCFollow跟隨動作,繼承於CCAction,可以實現節點跟隨另一個節點動作。它內部封裝了一個boundary,也就是跟隨範圍,初始爲CCRectZero。
- //創建一個CCFollow對象,create實際上調用了initWithTarget
- static CCFollow* create(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);
- bool initWithTarget(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);
4.CCSpeed
CCSpeed可調整速度動作類,內部封裝了一個速度值,CCSpeed使用很簡單,就是傳入一個動作和速度,在內部重新copy一個新的動作返回。
- //創建一個可變速度動作類,傳入速度值
- static CCSpeed* create(CCActionInterval* pAction, float fSpeed);
5.CCFiniteTimeAction
CCFiniteTimeAction有限次動作執行類,繼承於CCAction,它有兩個子類CCActionInstant和CCActionInterval,前者代表瞬時動作,也就是這個動作基本不需要時間馬上就能完成,而後者代表延時,這個動作需要一段時間來運行。它的子類說明看上圖吧。
相比CCAction,它多了一個m_fDuration屬性,表示持續時間。
- //獲取/設置動作持續時間
- float getDuration(void);
- void setDuration(float duration);
- //反轉動作,類似於倒帶效果,返回一個新的動作
- virtual CCFiniteTimeAction* reverse(void);
好了,遊戲的基本元素就寫到這裏,寫API文檔很蛋疼的說。。。