关于动画的各类操做,总结一下以便之后复习查找。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