[Cocos2D-X] Cocos2D-X TestCPP 详解(二)Action 中
Cocos2D-X TestCPP详解(二)Action 中
昨天,我们介绍了 ActionsTest 中一些基本的动作。循序渐进,今天,我们就来介绍一些稍微复杂些的动作咯。当然这些动作会使你的游戏,看起来更炫~更流畅。
CardinalSplineBy / CardinalSplineTo:自定义路径移动
CCPointArray *array = CCPointArray::create(20);
array->addControlPoint(ccp(0, 0));
array->addControlPoint(ccp(s.width/2-30, 0));
array->addControlPoint(ccp(s.width/2-30, s.height-80));
array->addControlPoint(ccp(0, s.height-80));
array->addControlPoint(ccp(0, 0));
CCCardinalSplineBy *action = CCCardinalSplineBy::create(3, array, 0);
CCCardinalSplineBy::create 参数1:执行时间 参数2:点数组 参数3:惯性
这里,第三个参数,个人觉得叫惯性、张力都可以,看个人理解咯!
CatmullRomBy / CatmullRomTo:云线路径移动
CCCatmullRomTo *action2 = CCCatmullRomTo::create(3, array2);
CCCatmullRomBy *action3 = CCCatmullRomBy::create(3, array2);
CCCatmullRomTo::create 参数1:执行时间 参数2:点数组
CCCatmullRomBy::create 参数1:执行时间 参数2:点数组
大家看到了,这个云线呢,在拐弯处移动速度稍快哦。
BezierBy / BezierTo:贝塞尔曲线移动
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(0, s.height/2);
bezier.controlPoint_2 = ccp(300, -s.height/2);
bezier.endPosition = ccp(300,100);
CCActionInterval* bezierForward = CCBezierBy::create(3, bezier);
CCBezierBy::create 参数1:执行时间 参数2:贝塞尔Config
贝塞尔曲线的用途广泛,当然咯,我们的游戏中也不缺乏他的身影,这里重要的说下ccBezierConfig 。Cocos2D-X 中需要用到贝塞尔曲线的地方都有他的身影。其实,它也没有什么神秘的,只是一个拥有三个 CCpoint 的结构体,C2D-X 为了我们使用的方便提供了出来。
Blink:闪烁
CCActionInterval* action1 = CCBlink::create(2, 10);
CCBlink::create 参数1:执行时间 参数2:闪烁次数
这个就很简单了,像我们游戏中被***的时候,要闪一下就用他,很方便,很简单。 当然,效果也是很好的。
FadeIn / FadeOut:渐隐、渐显
CCActionInterval* action1 = CCFadeIn::create(1.0f);
CCActionInterval* action2 = CCFadeOut::create(1.0f);
CCFadeIn::create 参数1:执行时间
CCFadeOut::create 参数1:执行时间
TintTo / TintBy:颜色渐变
CCActionInterval* action1 = CCTintTo::create(2, 255, 0, 255);
CCActionInterval* action2 = CCTintBy::create(2, -127, -255, -127);
CCTintTo::create 参数1:时间 参数2:red值 参数3:green值 参数4:blue值
CCTintBy::create 参数1:时间 参数2:red值 参数3:green值 参数4:blue值
这里的By是在此基础之上变化。之前的都是在坐标上面变化,这个是在颜色上变化哦。
Sequence of InstantActions:动作回调
CCFiniteTimeAction* action = CCSequence::create(
CCPlace::create(ccp(200,200)),
CCShow::create(),
CCMoveBy::create(1, ccp(100,0)),
CCCallFunc::create(this, callfunc_selector(ActionSequence2::callback1)),
CCCallFuncN::create(this, callfuncN_selector(ActionSequence2::callback2)),
CCCallFuncND::create(this, callfuncND_selector(ActionSequence2::callback3), (void*)0xbebabeba),
NULL);
CCCallFunc::create 参数1:函数所在对象 参数2:selector包装函数
CCCallFuncN::create 参数1:函数所在对象 参数2:selector包装函数
CCCallFuncND::create 参数1:函数所在对象 参数2:selector包装函数
参数3:自定义参数
这里,我们第一次接触到了 Cocos2D-X 中的回调函数,在游戏中,我们想在一个动作结束时得到一个反馈,我们就要用到这些函数。
RemoveSelf :消失
CCFiniteTimeAction* action = CCSequence::create(
CCMoveBy::create( 2, ccp(240,0)),
CCRotateBy::create( 2, 540),
CCScaleTo::create(1,0.1f),
CCRemoveSelf::create(),
NULL);
CCRemoveSelf::create
这个的效果大家看到了就是让精灵越来越小,直到消失。
Spawn:同时执行动作
CCAction* action = CCSpawn::create(
CCJumpBy::create(2, ccp(300,0), 50, 4),
CCRotateBy::create( 2, 720),
NULL);
这个就是同时执行动作,动作的时间长度按照时间最长的动作决定。
DelayTime:延时
CCFiniteTimeAction* action = CCSequence::create( move, CCDelayTime::create(2), move, NULL);
CCDelayTime::create 参数1:延时时间
OrbitCamera:球面轨迹旋转
CCActionInterval* orbit1 = CCOrbitCamera::create(2,1, 0, 0, 180, 0, 0);
CCOrbitCamera::create 参数1:执行时间 参数2:起始半径 参数3:半径差
参数4:起始Z角 参数5:旋转Z角差 参数6:起始X角
参数5:旋转X角差
好了,今天也不早了就先介绍到这里。明天再见咯。
CocoStudio 讨论学习群:141444261
Cocos2D-X 讨论学习群:244959010