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()方法即可执行。

 



以上。


 

你可能感兴趣的:(sequence,cocos2dx,spawn,持续动作,复合动作)