COCOS學習筆記--持續動作ActionInterval

上一篇博客介紹了即時動作ActionInstant,與即時動作相對的是持續動作ActionInterval。顧名思義,持續動作就是需要一段時間來持續執行的動作,並且在有限時間內改變執行對象的一些屬性。因此持續動作的靜態生成函數,往往附帶一個時間值。

 

持續動作ActionInterval類的子類如下:

 

 

一.簡單的持續動作

可以看到,很多持續動作類名都有後綴To或By。這兩種後綴有什麼區別呢?To表示動作最終達到的目標值,By表示動作的增量值,如:

auto  _moveTo = MoveTo::create(3.0,Vec2(900,600));//表示花3.0秒,按向量(900,600)移動一段距
auto  _moveBy = MoveBy::create(3.0,Vec2(900,600))//表示花3.0秒,移動到座標(900,600)


另外,除移動外,簡單的持續動作還包括縮放、旋轉、跳躍等等,舉一些常用的例子:

//縮放動作
auto  _scaleTo = ScaleTo::create(3.0,2));
 
//旋轉動作
auto _rotateTo = RotateTo::create(3.0,60);
 
//跳躍動作
//參數:1.執行時間 2.終點座標 3.跳躍高度 4.跳躍次數
auto _jumpTo = JumpTo::create(3.0,Vec2(),200,4);
 
//bezier曲線移動動作
//首先創建一個bezier曲線配置
ccBezierConfig  ccb;
ccb.controlPoint_1 = Vec2(540,400);//第一個控制點
ccb.controlPoint_2 = Vec2(640,200);//第二個控制點
ccb.endPosition = Vec2(800, 100);//終點
//然後創建bezier動作
auto _bezierTo = BezierTo::create(3.0,ccb);
//執行動作
sprite->runAction(_bezierTo);
 
//淡入淡出動作
//參數:1.時間 2.透明度
//精靈創建默認透明度255
auto _fadeTo = FadeTo::create(3.0,0);
 
//延時動作
//一般用於動作間隔
auto _delayTime = DelayTime::create(3.0);
 
//色彩漸變動作
//參數:1.時間 2.RGB
auto _tintTo = TintTo::create(3.0,255,0,0);
 
//閃耀動作
//參數:1.時間 2.閃耀次數
auto _blink = Blink::create(3.0,10);


二.複合動作

除了以上簡單的持續動作,我們在Cocos開發中還經常會用到複合動作,當同一個node有多個動作需要組合執行時常常會使用複合動作。複合動作有4種:

1.Sequence 按序列執行多個動作

2.Spawn 同時執行多個動作

3.Repeat重複執行幾次

4.RepeatForever永遠執行

注意,這4種複合動作裏面的動作即可以包含簡單的持續動作,也可以包含即時動作,還可以互相包含複合動作

以下是這四個複合動作的使用實例:

//先創建幾個簡單動作
//可以是即時動作,也可以是持續動作
auto _blink = Blink::create(3.0,10);
auto _place = Place::create(Vec2(100,100));
auto  _scaleTo = ScaleTo::create(3.0,2));

//順序執行一系列動作
//最後參數要爲null,告訴方法已經沒有動作了
auto _sequence = Sequence::create(_blink, _place,_bezierTo,NULL);

//同時執行一系列動作
auto _spawn = Spawn::create(_blink, _place, _bezierTo, NULL);
 
//重複執行某一動作幾次
//參數:1.動作 2.次數
auto _repeat = Repeat::create(_blink,10);

//永遠重複執行某一動作
auto _repeatForever = RepeatForever::create(_blink);

這些動作SequenceSpawnRepeatRepeatForever等複合動作通過node調用runAction()方法即可執行。

 



以上。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章