[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