cocos2d-x溫故(二)Action!

直接看繼承關係圖:函數

image

多數用到的是限時動做,其意思就是有限時間內完成的動做,它又分爲瞬時動做和延時動做。this

瞬時動做以下:.net

imageactiontests第一個例子也算是:線程

image設置縮放,位置,透明度顏色等等。指針

延時動多就多了,但絕大多數又分爲兩種即to和by.to是至,by增量。看個例子:對象

CCActionInterval*  actionTo = CCScaleTo::create(2.0f, 0.5f);
CCActionInterval*  actionBy = CCScaleBy::create(2.0f, 0.5f);繼承

一個精靈執行了actionTo後的大小是原來的一半。執行actionBy後就是原來的1.5倍。資源

 

比較麻煩的就是如下幾種了:get

CCSequence,即動做會順序執行,一個執行完了接着執行下一個。it

CCSpawn,動做融合,即其參數例表裏的動做同時執行。

CCRepeatForever,動做永遠執重複執行。

這三個能夠組合其餘動做,它們之間也可能相互組合。

 

再有就是能夠調用函數的動做了,以下:

image

一個動做序列,其中順序執行其中的六個動做,前兩個就是傳說中的瞬時動做。後三個就是能調動函數的。調用的函數均無返回值。

其參數都有一個target,一個選擇器.target是指你要調用哪一個對象的方法,這裏就是this。假如你有我的類的對象小明,你想調用他的方法,這裏this就要

換成小明的指針了。選擇器裏面的函數名就是你要調用的方法了,在cocos2d中前面不須要指出類名的,但cocos2d-x中是要的,主要緣由應該是objc和C++的不一樣。

而且只是函數名,不要帶();

CCCallFunc:調用的方法是不帶參數的。

CCCallFuncN:調用的方法是須要一個NODE的指針做爲參數,其傳過來的就是執行這個動做的NODE,如A->runAction,就是指A,並非其參數target.

CCCallFuncND:調用的方法是須要一個NODE的指針和一個數據的指針做爲參數;可能把數據傳過去。

CCCallFuncNO:和上面的CCCallFuncND差很少,不過傳的是一個CCObjet*.

 

還有一個狀況,以下:

CCActionInterval*  act1 = CCRotateTo::create(1, 90);
  CCActionInterval*  act2 = CCTintTo::create(2, 255, 0, 255); 

  m_tamara->runAction(act1);
  m_kathia->runAction(act2);

當執行這四句代碼後,兩個動做會同時執行。相似CCSpawn。

action的具體實現沒有具體研究,不過我以爲你能夠把它當成一個線程來用。好比,你能夠用CCCallFunc預加載一些資源等,這樣程序能夠一直執行,不用

等待。相似執行一次的schedule。不少用到線程的時候用這兩個替代未常不可。

好了,就想到這些東西,再想到再補充吧。

第一次寫,不足之處還望指正。

轉載請註明出處。

相關文章
相關標籤/搜索