[Cocos2D-X] Cocos2D-X TestCPP 详解(二)Action 中
更新:HHH   时间:2023-1-7


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





返回游戏开发教程...