【玩轉cocos2d-x之九】動作類CCAction

原創作品,轉載請標明:http://blog.csdn.net/jackystudio/article/details/12770909


精靈也出來了,但是不會動的精靈是木有用的。。。CCAction就是負責來解決精靈運動的問題。


1.概況


CCAction直接從CCObject繼承而來,注意它代表的是一個動作,是動詞。精靈執行了這個動作,而不是名詞。CCAction本身並沒有什麼功能,主要是定義了一些通用函數和虛函數讓子類實現多態性。


2.接口

  1. //返回一個描述  
  2. const char* description();  
  3.   
  4. //返回動作是否結束  
  5. virtual bool isDone(void);  
  6.   
  7. //在動作開始前調用,需要設置目標精靈  
  8. virtual void startWithTarget(CCNode *pTarget);  
  9.   
  10. //每幀調用,time在0~1之間,0代表動作剛開始,0.5代表動作執行一半,1代表動作結束  
  11. virtual void update(float time);  
  12.   
  13. //返回/設置目標節點  
  14. CCNode* getTarget(void);  
  15. void setTarget(CCNode *pTarget);  
  16.   
  17. //獲取/設置上一個節點  
  18. CCNode* getOriginalTarget(void);  
  19. void setOriginalTarget(CCNode *pOriginalTarget);  
  20.   
  21. //獲取/設置標籤  
  22. int getTag(void);  
  23. void setTag(int nTag);  
  24.   
  25. //創建動作靜態方法  
  26. static CCAction* create();  


3.CCFollow

CCFollow跟隨動作,繼承於CCAction,可以實現節點跟隨另一個節點動作。它內部封裝了一個boundary,也就是跟隨範圍,初始爲CCRectZero。

  1. //創建一個CCFollow對象,create實際上調用了initWithTarget  
  2. static CCFollow* create(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);  
  3. bool initWithTarget(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);  


4.CCSpeed

CCSpeed可調整速度動作類,內部封裝了一個速度值,CCSpeed使用很簡單,就是傳入一個動作和速度,在內部重新copy一個新的動作返回。

  1. //創建一個可變速度動作類,傳入速度值  
  2. static CCSpeed* create(CCActionInterval* pAction, float fSpeed);  


5.CCFiniteTimeAction

CCFiniteTimeAction有限次動作執行類,繼承於CCAction,它有兩個子類CCActionInstant和CCActionInterval,前者代表瞬時動作,也就是這個動作基本不需要時間馬上就能完成,而後者代表延時,這個動作需要一段時間來運行。它的子類說明看上圖吧。

相比CCAction,它多了一個m_fDuration屬性,表示持續時間。

  1. //獲取/設置動作持續時間  
  2. float getDuration(void);  
  3. void setDuration(float duration);  
  4.   
  5. //反轉動作,類似於倒帶效果,返回一個新的動作  
  6. virtual CCFiniteTimeAction* reverse(void);  

好了,遊戲的基本元素就寫到這裏,寫API文檔很蛋疼的說。。。

發佈了107 篇原創文章 · 獲贊 45 · 訪問量 126萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章