總結下cocos2dx的這些動作,知識大概的總結,不是包含所有。文中的名詞是自己取得。
首先我們要把握主線,我們在cocos2dx用到的動作都是派生自Action類,而Action又派生自Ref類。而我們主要用到的時屬于Action派生的FiniteTimeAction(有限時間的動作類)類所派生的類。
FiniteTimeAction中得有限時間類又分為兩個部分,一個部分是瞬時動作類(ActionInstant),也就是執行時你是看不到過程,只能看到結果。一部分是ActionInterval(持續動作類),這類動作都是有持續時間的。
1.框架:
Action類派生出:FiniteTimeAction
#FiniteTimeAction類派生出:ActionInstant類和ActionInterval類
##ActionInstant類派生出:CallFunc類、FlipX、Hide、Place(這里只是列出我常用的)
##ActionInterval類派生出:又分為兩大類,一大類是純持續動作類、一大類是動作包裝類(這是我自己細分的)
其中純持續動作類包括:BezierBy(To)(貝茲爾曲線動作)、Blink(閃爍動作)、FadeIn(Out)、JumpBy(To)(跳轉動作,指定起跳位置、高度、次數)、RotateBy(To)、ScaleBy(To)(拉伸動作)。
其中一般By是相對的意思當前位置或者倍數,To是指定絕對。第一個參數都是指定持續時間。
其中動作包裝類包括::Repeat、RepeatForever、Sequence、Spawn,動作包裝類對所包裝的動作有一定副作用,其副作用一般可顧名思義。
如上,Repeat包裝后的動作就是重復指定次數被包裝的動作、RepeatForever則是持續不斷、Sequence可以包裝多個動作、其副作用是讓多個動作順序執行
Spawn包裝后的動作的副作用是,所有動作一起執行。
2.動作的創建:
一般動作的創建是調用相應動作的類的create工廠方法。
3.動作的執行:
一般動作的是發送runAction消息給指定的Sprite對象,傳入參數就是動作對象。
4.幾個重要動作Sequence、Spawn、CallFunc
Sequence動作的使用就是如代碼:
auto actions = Sequence::create(action1,action2,...,actionN, NULL);
sprite->runAction(actions);
Spawn的使用也一樣,知識把關鍵字替換掉
CallFunc動作是我們就稱為回調動作把(或者說是把函數轉化為動作),傳入的第二個函數指針需要通過callFunc_selector格式化該函數指針。
auto actionCF= CallFunc::create(this, callFunc_selector(HelloWord::sayLove));