[cocos2d-x]关于Action
Action的分类
第一种:FiniteTimeAction类:有限时间的动作类
第二种:Follow类:节点跟随另一种节点的类
第三种:Speed类:节点执行速度类
第一种有限时间的动作类又分为瞬时动作和持续时间的动作。
几个重要的动作类
- 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