持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性。因此持续动作的静态生成函数。往往附带一个时间值。

 

持续动作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()方法就可以运行。

01-04 04:44