cocos2d对动画的各种操作
生活随笔
收集整理的這篇文章主要介紹了
cocos2d对动画的各种操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于動畫的各種操作,總結一下以便以后復習查找。
內容簡要:
1、瞬時動作2、延時動作 ? ? ? ?3、?組合動作 4、動畫
5、速度變化6、函數調用7、創建動作動畫8、控制動畫幀的速度
原文地址:?http://blog.csdn.net/dingkun520wy/article/details/7014233
-----------------------------------------------------------------------------------------------------------------------------------------------------
瞬時動作:瞬時動作的基類是InstantAction
1、放置位置? CGPoint p = ccp(width,height);?
? [sprite runAction:[CCPlace actionWithPosition:p]];?
2、隱藏
? [sprite runAction:[CCHide action]];
3、顯示
? [sprite runAction:[CCShow action]];
(效果類似亍 [node ?setVisible:YES]. 之所以作為一個勱作來實現是為了可以不其
他勱作形成一個連續勱作)
4、可見切換
? [sprite runAction:[CCToggleVisibility action]];?
延時動作:延時動作的基類是CCIntervalAction
? 函數命名規則:
XxxxTo: 意味著運勱到指定癿位置。?
XxxxBy:意味著運勱到按照指定癿x、y增量癿位置。(x、y可以是負值)?
1、移動到 – CCMoveTo?
2、移動– CCMoveBy?
3、跳躍到 – CCJumpTo 設置終點位置和跳躍癿高度和次數。
4、跳躍 – CCJumpBy ?設置終點位置和跳躍癿高度和次數。
5、貝塞爾 – CCBezierBy 支持3次貝塞爾曲線:P0-起點,P1-起點切線方向,P2-終 ?點切線方向,P3-終點。?首先設置定Bezier參數,然后執行。
6、放大到 – CCScaleTo 設置放大倍數,是浮點型。?
7、放大 – CCScaleBy?
8、旋轉到 – CCRotateTo?
9、旋轉 – CCRotateBy?
10、閃爍 – CCBlink 設定閃爍次數
11、色調變化到 – CCTintTo?
12、色調變換 – CCTintBy?
13、變暗到 – CCFadeTo?
14、由無變亮 – CCFadeIn?
15、由亮變無 – CCFadeOut
組合動作:
1、序列-CCSequence
// 創建5個勱作?
? id ac0 = [sprite runAction:[CCPlace actionWithPosition:p]];?
? id ac1 = [CCMoveTo actionWithDuration:2 position:ccp(50,50)];?
? id ac2 = [CCJumpTo actionWithDuration:2 position:ccp(150,50) height:30?jumps:5];?
? id ac3 = [CCBlink actionWithDuration:2 blinks:3];?
? id ac4 = [CCTintBy actionWithDuration:0.5 red:0 green:255 blue:255];?
? //將5個勱作組合為一個序列,注意丌要忘了用nil結尾。?
? [sprite runAction:[CCSequence actions:ac0, ac1, ac2, ac3,?ac4, ac0, nil]];?
2、同步-Spawn
? // 同步 勱作和組合勱作 以形成一個連續癿新勱作
? [sprite runAction:[CCSpawn actions:ac1, ac2, seq, nil]];?
3、重復有限次數 -Repeate
? // 創建勱作序列?
? id ac1 = [CCMoveTo actionWithDuration:2 position:ccp( 50,50)];?
? id ac2 = [CCJumpBy actionWithDuration:2 position:ccp(-400, -200)?height:30 jumps:5];?
? id ac3 = [CCJumpBy actionWithDuration:2 position:ccp(2, 0) height:20?jumps:3];?
? id seq = [CCSequence actions:ac1, ac2, ac3, nil];??
? // ?重復運行上述勱作序列3次。?
? [sprite runAction:[CCRepeat actionWithAction:seq times:3]];
4、反動作-Reverse
反動作就是反向(逆向)執行某個動作,支持針對動作序列癿反勱作序列。反動作
不是一個與門的類,而是CCFiniteAction引入的一個接口。不是所有的類都支持
反動作,XxxxTo類通常不支持反動作,XxxxBy類通常支持。
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(190,220)];
// 創建某個動作的反動作。 ??
id ac2 = [ac1 reverse];???
[sprite runAction:[CCRepeat actionWithAction:[CCSequence actions:ac1,?ac2,nil] times:2]];?
動畫-Animation
CCAnimation *animation = [AtlasAnimation animationWithName:@"flight"?delay:0.2f];?
? // 每幀癿內容定義。?
? for(int i=0;i<3;i++) {?
? ? int x= i % 3;?
? ? [animation addFrameWithRect: CGRectMake(x*32, 0, 31, 30) ];?
? } ? ??
? // 執行勱畫效果?
? id action = [CCAnimate actionWithAnimation: animation];?
? [sprite runAction:[CCRepeat actionWithAction:action times:10]];
無限重復 - RepeatForever
// 將該動畫作為精靈的本征動畫,一直運行。?
? [sprite runAction:[RepeatForever actionWithAction:action]];?
速度變化
1、EaseIn 由慢至快。?
2、EaseOut 由快至慢?
3、EaseInOut 由慢至快再由快至慢。?
4、EaseSineIn 由慢至快。
5、EaseSineOut 由快至慢?
6、EaseSineInOut 由慢至快再由快至慢。?
7、EaseExponentialIn 由慢至極快。?
8、EaseExponentialOut 由極快至慢。?
9、EaseExponentialInOut 由慢至極快再由極快至慢。?
10、Speed 人工設定速度,還可通過SetSpeed不斷調整。
延時動作 - Delay
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)];?
id ac2 = [ac1 reverse];?
// 實現一個等待間歇?
[sprite ?runAction:[Sequence ?actions:ac1, ?[DelayTime?actionWithDuration:1], ac2, nil]];
函數調用
? id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200,?200)];?
? id ac2 = [ac1 reverse];?
? id acf = [CCCallFunc actionWithTarget:self?selector:@selector(CallBack1)];?
? ?[sprite runAction:[CCSequence actions:ac1, acf, ac2,?nil]];
1、帶對象參數
id acf = [CallFuncN actionWithTarget:self?selector:@selector(CallBack2:)];
- (void) CallBack2:(id)sender;
2、帶對象、數據參數
id acf = [CCCallFuncND actionWithTarget:self?selector:@selector(CallBack3:data:) data:(void*)2];
-(void) CallBack3:(id)sender data:(void*)data;
創建動作
1、利用文件名
CCAnimation*anim=[CCAnimationanimationWithFile:@"Jun"frameCount:12delay:0.1];?
CCAnimate* animate = [CCAnimate actionWithAnimation:anim];
CCSequence *seq = [CCSequence actions:animate,nil];?
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:seq];
[sprite runAction:repeat];
2、利用緩存
[[CCSpriteFrameCache sharedSpriteFrameCache]?addSpriteFramesWithFile:@"Jun.plist"]; ? ? ?
anim=[CCAnimation animationWithFrame:@"Jun" frameCount:12 delay:0.1];?
animate = [CCAnimate actionWithAnimation:anim];
seq = [CCSequence actions:animate,nil];?
repeat = [CCRepeatForever actionWithAction:seq];
[sprite runAction:repeat];?
控制動作的速度
1、創建
[[CCSpriteFrameCache sharedSpriteFrameCache]?addSpriteFramesWithFile:@"Jun.plist"];
CCSprite*sprite=[CCSprite spriteWithSpriteFrameName:@"Jun1.png"];
sprite.position=ccp(200,200);
[self addChild:sprite];?
CCAnimation*anim=[CCAnimation animationWithFrame:@"Jun" frameCount:12?delay:0.1];?
CCAnimate* animate = [CCAnimate actionWithAnimation:anim];
CCSequence *seq = [CCSequence actions:animate,nil];?
//動作放入speed中
CCSpeed *speed =[CCSpeed actionWithAction:[CCRepeatForever?actionWithAction:seq] speed:1.0f];
[speed setTag:66];
[Sprite runAction:speed];
2、改變
CCSpeed *speed=(CCSpeed*)[sprite getActionByTag:66];
[speed setSpeed:0.5];//放慢原有速度的0.5倍
轉載于:https://www.cnblogs.com/java20130723/archive/2012/04/25/3212298.html
總結
以上是生活随笔為你收集整理的cocos2d对动画的各种操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java固定资产管理系统源码
- 下一篇: 动态链接库 仅有.dll文件时候的使用方