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=[CCAnimationanimationWith File:@"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 spriteWithSpriteFrameNam e:@"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倍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值