[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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章