[cocos2d-x]关于Action

Action的分类

这里写图片描述
第一种:FiniteTimeAction类:有限时间的动作类
第二种:Follow类:节点跟随另一种节点的类
第三种:Speed类:节点执行速度类

第一种有限时间的动作类又分为瞬时动作和持续时间的动作。

几个重要的动作类

  1. Sequence:按顺序执行一系列的动作。但是在执行的动作系列中不能出现Repeat这种无限的动作。
CCMoveTo* move_1 = CCMoveTo::create(1,Vec(100,100));//第一个参数是时间,第二个参数是移动到的坐标
CCMoveBy* move_2 = CCMoveBy::create(1,ccp(100,200));//moveto和moveby的区别:一个是绝对坐标,一个是相对坐标(相对精灵原来的坐标)
CCMoveTo* move_3 = CCMoveBy::create(1,ccp(200,200));
CCSequence* seq = CCSequence::create(move_1,move_2,move_3,NULL);//将三种移动全部集合到一个动作序列
sprite->runAction(seq);//将精灵执行这个动作

2.Spawn:同时执行一系列动作,执行的时间以子动作中最长事件为准。

CCSpawn* action = CCSpawn::create( 
CCJumpBy::create(1,Vec(300,0) ,50 ,4), 
CCRotateBy::create(2,180), NULL); 
sprite->runAction(action);//同时执行这两个动作,边跳跃边旋转

3.Repeat:重复一个动作,可以自定义重复的次数。

CCMoveBy* action = CCMoveBy::create(2,Vec(10,10));
CCRepeat* repeat = CCRepeat::create(action,3);
sprite->runAction(repeat);//动作重复三次

4.RepeatForerver:无限次重复一个动作。

CCRotateBy* rotate = CCRotateBy::create(1.0,360); 
CCRepeatForever* action2 = CCRepeatForever::create(rotate); 
sprit->runAction(action2);//无限执行这个动作

5.CCMoveTo、CCMoveBy:移动到某一位置

CCMoveBy::create(2, ccp(80,80)) ;

6.CCScaleTo、CCScaleBy:进行一定比例的放大缩小

CCScaleTo::create(2.0f, 0.5f) ;

7.CCSkewTo、CCSkewBy:进行一定角度的拉伸

CCSkewTo::create(2, 37.2f, -37.2f);

8.CCRotateTo、CCRotateBy:进行一定角度的旋转

CCRotateBy::create(2, 45.0f) ;

9.CCJumpTo、CCJumpBy:进行跳跃

CCJumpTo::create(2, ccp(300,300), 50, 4);

10.CCBezierBy、CCBezierTo:贝塞尔曲线

ccBezierConfig bezier; 
bezier.controlPoint_1 = ccp(0, 200);  
bezier.controlPoint_2 = ccp(300, -200);  
bezier.endPosition = ccp(300,100);  
CCBezierBy::create(3, bezier);

11.CCBlink:表示闪烁

CCBlink::create(2, 10) ;
https://github.com/li-zheng-hao
原文地址:https://www.cnblogs.com/lizhenghao126/p/11053721.html