cocos2d對動畫的各類操做

關於動畫的各類操做,總結一下以便之後複習查找。node


內容簡要:緩存

一、瞬時動做二、延時動做        三、 組合動做 四、動畫ide

五、速度變化六、函數調用 七、建立動做動畫八、控制動畫幀的速度函數


原文地址: http://blog.csdn.net/dingkun520wy/article/details/7014233
動畫

-----------------------------------------------------------------------------------------------------------------------------------------------------spa



瞬時動做:瞬時動做的基類是InstantAction.net

一、放置位置
  CGPoint p = ccp(width,height); 
  [sprite runAction:[CCPlace actionWithPosition:p]]; 
二、隱藏
  [sprite runAction:[CCHide action]];
三、顯示
  [sprite runAction:[CCShow action]];
(效果相似亍 [node  setVisible:YES]. 之因此做爲一個勱做來實現是爲了能夠不其
他勱做造成一個連續勱做)
四、可見切換
  [sprite runAction:[CCToggleVisibility action]]; 


延時動做:延時動做的基類是CCIntervalAction

  函數命名規則:
XxxxTo: 意味着運勱到指定癿位置。 
XxxxBy:意味着運勱到按照指定癿x、y增量癿位置。(x、y能夠是負值) 
一、移動到 – CCMoveTo 
二、移動– CCMoveBy 
三、跳躍到 – CCJumpTo 設置終點位置和跳躍癿高度和次數。
四、跳躍 – CCJumpBy  設置終點位置和跳躍癿高度和次數。
五、貝塞爾 – CCBezierBy 支持3次貝塞爾曲線:P0-起點,P1-起點切線方向,P2-終 點切線方向,P3-終點。 首先設置定Bezier參數,而後執行。
六、放大到 – CCScaleTo 設置放大倍數,是浮點型。 
七、放大 – CCScaleBy 
八、旋轉到 – CCRotateTo 
九、旋轉 – CCRotateBy 
十、閃爍 – CCBlink 設定閃爍次數
十一、色調變化到 – CCTintTo 
十二、色調變換 – CCTintBy 
1三、變暗到 – CCFadeTo 
1四、由無變亮 – CCFadeIn 
1五、由亮變無 – CCFadeOut

組合動做
一、序列-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]]; 

二、同步-Spawn
  // 同步 勱做和組合勱做 以造成一個連續癿新勱做
  [sprite runAction:[CCSpawn actions:ac1, ac2, seq, nil]]; 

三、重複有限次數 -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]];

四、反動做-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]]; 

速度變化


一、EaseIn 由慢至快。 
二、EaseOut 由快至慢 
三、EaseInOut 由慢至快再由快至慢。 
四、EaseSineIn 由慢至快。
五、EaseSineOut 由快至慢 
六、EaseSineInOut 由慢至快再由快至慢。 
七、EaseExponentialIn 由慢至極快。 
八、EaseExponentialOut 由極快至慢。 
九、EaseExponentialInOut 由慢至極快再由極快至慢。 
十、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]];

一、帶對象參數
id acf = [CallFuncN actionWithTarget:self selector:@selector(CallBack2:)];

- (void) CallBack2:(id)sender;
二、帶對象、數據參數
id acf = [CCCallFuncND actionWithTarget:self selector:@selector(CallBack3:data:) data:(void*)2];

-(void) CallBack3:(id)sender data:(void*)data;



建立動做
一、利用文件名
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];


二、利用緩存
[[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]; 

控制動做的速度
一、建立
[[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];

二、改變
CCSpeed *speed=(CCSpeed*)[sprite getActionByTag:66];
[speed setSpeed:0.5];//放慢原有速度的0.5倍orm

相關文章
相關標籤/搜索