iOS_31_cocos2d_CCAction – iPhone手機開發技術文章 iPhone軟體開發教學課程

CCAction【動作】就是行為

在特定時間內完成移動、縮放、旋轉等操作的行為,

CCNode可以通過runAction方法【執行動作】來實現動畫效果,

動作的每個子類都封裝瞭不同的動作效果。

CCAction的繼承結構圖

另外兩個非常重要的子類是:vcD4KPHA+y7LKsbav1/coQ0NBY3Rpb25JbnN0YW50KbrNvOS49Lav1/coQ0NBY3Rpb25JbnRlcnZhbCmjrDwvcD4KPHA+y/zDx9PWsPy6rMHLt8ezo7bgtcTX08Dgo6zDv9K7uPbX08Dgtry21NOmuMPXxdK71ta+38zltcS2r9f3ob7Ssr/Jv7TSssrH1Mu2r6Gitq+7raG/PC9wPgo8cD48c3Ryb25nPtei0uJDQ0FjdGlvbrrNQ0NGaW5pdGVUaW1lQWN0aW9uysez6c/zwOA8L3N0cm9uZz6jrDwvcD4KPHA+1ru2qNLlwcvSu9Cpu/mxvsr00NS6zbe9t6ijrDwvcD4KPHA+yrW8ysq508PKsaOs0qq0tL2oxuTX08Dgtq/X96OsPC9wPgo8cD7Iu7rztffTw0NDTm9kZbXEcnVuQWN0aW9ut723qKOs1rTQ0NDo0qq1xLav1/ehoravu62hotTLtq+hozwvcD4KPHA+PGJyPgo8L3A+CjxoMT685Lj0tq/X96Gi09azxrrEyrG2r9f3o6zWuLav1/e1xM3qs8nSqs/7usTSu7aotcTKsbzkxqw8L2gxPgo8cD7Q6NKqvq25/dK7ts7KsbzkssXE3M3qs8m1xNK70Km2r9f3o6w8L3A+CjxwPsv509C1xLzkuPS2r9f3try8zLPQ19RDQ0FjdGlvbkludGVydmFsoaM8L3A+CjxwPrHIyOdDQ0FjdGlvblJvdGF0ZUJ5oaJDQ0FjdGlvblJvdGF0ZVRvoaJDQ0FjdGlvbk1vdmVCeaGiQ0NBY3Rpb25Nb3ZlVG+jrL/J0tTU2ta4tqjKsbzkxNrQ/deq1ri2qLXEvce2yDwvcD4KPHA+PHN0cm9uZz7XotLio7pCecrHz+C21MG/o6xUb8rHvvi21MG/PC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjxpbWcgc3JjPQ==”https://www.2cto.com/uploadfile/Collfiles/20140907/2014090709160254.png” alt=”\”>

// 1秒內順時針旋轉360°
CCActionRotateBy *rotate = [CCActionRotateBy actionWithDuration:1 angle:360];
[sprite runAction:rotate];

間隔動作的繼承結構圖:(cocos2d V3版類名已經全改為CCAction開頭)

常見的CCActionInterval的子類:

1.CCActionBlink

閃爍效果

// 5秒內閃爍20次
CCActionBlink *blink = [CCActionBlink actionWithDuration:5 blinks:20];
[sprite runAction:blink];

2.CCActionMoveBy和CCActionMoveTo

CCActionMoveBy是移動一段固定的距離(相對的距離),

CCActionMoveTo是移動到指定的位置(絕對目標位置)

// 在1秒內,向右移動100單位,同時向上移動80單位
CCActionMoveBy *moveBy = [CCActionMoveBy actionWithDuration:1 position:ccp(100, 80)];

// 在1秒內,從節點的當前位置移動到笛卡爾坐標系中(100, 80)這個位置
CCActionMoveTo *moveTo = [CCActionMoveTo actionWithDuration:1 position:CGPointMake(100, 80)];

3.CCActionRotateBy和CCActionRotateTo

CCActionRotateBy是在當前旋轉角度的基礎上再旋轉固定的角度,

CCActionRotateTo是從當前旋轉角度旋轉到指定的角度

假設精靈在初始化的時候已經CW clockwise順時針旋轉瞭45° degree

sprite.rotation = 45;

如果使用瞭CCActionRotateBy

CCActionRotateBy *rotateBy = [CCActionRotateBy actionWithDuration:1 angle:90];
[sprite runAction:rotateBy];

// 在1秒內,順時針旋轉90°,那麼sprite的最終旋轉角度是45° + 90° = 135°

如果使用瞭CCActionRotateTo

CCActionRotateTo *rotateTo = [CCActionRotateTo actionWithDuration:1 angle:90];
[sprite runAction:rotateTo];

// 在1秒內,順時針隻要旋轉45°,就可以轉到90°瞭,因為指定瞭sprite的最終旋轉角度就是90°

4.CCActionScaleBy和CCActionScaleTo

CCActionScaleBy是在當前縮放比例的基礎上再縮放一定的比例,

CCActionScaleTo是從當前縮放比例縮放到指定的比例 (相對於原始大小)

假設精靈在初始化的時候的縮放比例為0.8

sprite.scale = 0.8;

如果使用瞭CCActionScaleBy

CCActionScaleBy *scaleBy = [CCActionScaleBy actionWithDuration:1 scale:0.5];
[sprite runAction:scaleBy];
// 在1秒內,寬度和高度再縮小50%,那麼相對於原始大小,sprite最終縮放比例是0.8 * 0.5 = 0.4

如果使用瞭CCActionScaleTo

CCActionScaleTo *scaleTo = [CCActionScaleTo actionWithDuration:1 scale:0.5];
[sprite runAction:scaleTo];
// 在1秒內,寬度和高度縮小為0.5倍,那麼sprite最終縮放比例是就0.5

5.CCActionFadeIn和CCActionFadeOut和CCActionFadeTo

CCActionFadeIn是淡入,即由暗轉亮,從沒有到有;

CCActionFadeOut是淡出,即由亮轉暗,從有到沒有;

CCActionFadeTo用來修改Node的opacity不透明度

opacity 255為完全不透明,即完全可見

// 在2秒內,從沒有到有
CCActionFadeIn *fadeIn = [CCActionFadeIn actionWithDuration:2];

// 在2s內,從有到沒有
CCActionFadeOut *fadeOut = [CCActionFadeOut actionWithDuration:2];

// 在2s內,不透明度變為120,即變為半透明 (不透明度opacity取值范圍是0-255)
CCActionFadeTo *fadeTo = [CCActionFadeTo actionWithDuration:2 opacity:120];

6.CCActionRepeat

重復執行某個動作,可以指定重復的次數

// 1秒中順時針旋轉360°
CCActionRotateBy *rotateBy = [CCActionRotateBy actionWithDuration:1 angle:360];
// 重復執行2次旋轉動畫
CCActionRepeat *repeat = [CCActionRepeat actionWithAction:rotateBy times:2];

[sprite runAction:repeat];

7.CCActionAnimate

按順序地播放圖片,可以實現幀動畫。

To be continued…

發佈留言