CCACTION

刚开始研究一下Cocos2D的相关东西!太多的不懂啊!
毕竟是我接触的第一个游戏框架!它确实吸引了我!喜欢啊!就钻研吧!
不懂不要紧,我可以学!总会弄懂的!加油!

CCAction 类是Cocos2d中处理动画的类。
动画类很多,首先上一个 CCAction 类的结构图吧!

CCAction 结构

CCACTION - or7rccl - 0卜7r从1的博客


动画相关类是不是太庞大了!
其实没什么:
CCAction:所有动画类的父类。
CCActionInterval:区间动画,即动画需要一定动画时间。
CCActionInstant:瞬时动画,即动画不需要给定一定的时间片。
CCFiniteTimeAction:有限时间的动画,就是说,动画是有时间限制的,一定有执行完的时候。CCActionInterval类和CCActionInstant类都属于有限时间动画。
CCRepeatForever:无限循环动画。与CCFiniteTimeAction相对而言。
CCFollow:跟随动画。
CCSpeed:改变速度的动画。

动画方法

动画的方法太多!不过,愚公移山吧,我们一个一个来!

位置相关的基本动作

CCMoveTo动画

CGSize winSize = [[CCDirector sharedDirector] winSize];

    CCSprite *playerSprite = (CCSprite*)[self getChildByTag:1];// 得到精灵

    

    // CCMoveTo移动到ccp(x,y)。就是让精灵移动到特定的点。

id actionTo = [CCMoveTo actionWithDuration2 position:ccp(winSize.width/2, winSize.height/2)];

    [playerSprite runAction:actionTo];// 让精灵执行动画

    

CCMoveBy动画


    // 在指定的时间内,让精灵从原来的位置相对移动指定的像素。即:让精灵沿x轴移动0像素,沿y轴移动100像素。

id actionBy = [CCMoveBy actionWithDuration:2  position: ccp(0,100)];

    [playerSprite runAction:actionBy];// 让精灵执行动画


CCJumpTo动画

// 在指定的时间内,让精灵从原来的位置跳转到ccp(300,300)位置,跳跃高度100,跳动次数:4

    id actionJumpTo = [CCJumpTo actionWithDuration:2 position:ccp(300,300) height:100jumps:4];

    [playerSprite runAction:actionJumpTo];

    

CCJumpBy动画


    // 在指定的时间内,让精灵从原来的位置跳转指定的位移量ccp(0,300),即x轴位移0y轴位移300,跳跃高度100,跳动次数:4

id actionJumpToBy = [CCJumpBy actionWithDuration:2 position:ccp(0,300) height:100jumps:4];

    [playerSprite runAction:actionJumpToBy];


CCBezierTo动画

ccBezierConfig bezier;

bezier.controlPoint_1 = ccp(0, winSize.height/2);// 第一个点

bezier.controlPoint_2 = ccp(300, -winSize.height/2);// 第二个点

bezier.endPosition = ccp(300,100);// 终点

    // 3秒钟完成该贝塞尔曲线

id bezierForward = [CCBezierTo actionWithDuration:3 bezier:bezier];

    [playerSprite runAction:bezierForward];


CCBezierBy动画

ccBezierConfig bezier;

bezier.controlPoint_1 = ccp(0, winSize.height/2);// 第一个点

bezier.controlPoint_2 = ccp(300, -winSize.height/2);// 第二个点

bezier.endPosition = ccp(300,100);// 终点

    // 3秒钟完成该贝塞尔曲线

id bezierForward = [CCBezierBy actionWithDuration:3 bezier:bezier];

    [playerSprite runAction:bezierForward];


CCPlace动画


// 直接将精灵移动到指定的ccp(200,200)位置,这样主要作用可以配合其他动画,完成动画链

id actionPlace=[CCPlace actionWithPosition:ccp(200,200)];

    [playerSprite runAction:actionPlace];



总结:
可见:
XXXTo方法,是要移动到特定的一个点
XXXBy方法,在原始点的前提下,移动到指定的X轴,Y轴的位移量。

大小相关的基本动作

CCScaleTo 动画和CCScaleBy动画

// 1.0为原始大小,小于1:为缩小;大于1:为放大

    id actionScaleTo = [CCScaleTo actionWithDuration2 scale:0.5f];

    [playerSprite runAction:actionScaleTo];

    

    // 分别指定沿X轴和Y轴的放大或者缩小

id actionScaleTo_1 = [CCScaleTo actionWithDuration:2  scaleX:1 scaleY:2];

    [playerSprite runAction:actionScaleTo_1];


id actionScaleBy = [CCScaleBy actionWithDuration:2  scaleX:1 scaleY:10];

    [playerSprite runAction:actionScaleBy];

    

id actionScaleBy_1 = [CCScaleBy actionWithDuration:2 scaleX:5 scaleY:1];

    [playerSprite runAction:actionScaleBy_1];


旋转相关的基本动作

CCRotateTo 动画和CC Rotate By动画

// 旋转:在指定的时间内(2s),旋转61度。

    // 注意:小于180度:顺时针旋转;大于180度:逆时针旋转

    id actionRotateTo = [CCRotateTo actionWithDuration:2 angle:61.0f];

    [playerSprite runAction:actionRotateTo];

    

    id actionRotateBy = [CCRotateBy actionWithDuration:2 angle:61.0f];

    [playerSprite runAction:actionRotateBy];



显示/隐藏 相关的基本动作

CCShow 动画

// 显示精灵

    id actionShow = [CCShow action];

    [playerSprite runAction:actionShow];


CCHide动画

    

    // 隐藏精灵

    id actionHide = [CCHide action];

    [playerSprite runAction:actionHide];

    

 CCToggleVisibility动画


    // 显示/隐藏 精灵

    id actionToggleVisibility = [CCToggleVisibility action];

    [playerSprite runAction:actionToggleVisibility];


 CCBlink动画

 

// 闪烁:在指定的时间(3s),闪烁指定次数(10次)

    id actionBlink= [CCBlink actionWithDuration:3 blinks:10];

    [playerSprite runAction:actionBlink];


透明度 相关的基本动作

 CCFadeIn

// 透明度0255.

    // 淡入:在指定的时间内(1s),将透明度设置为255.

    id actionFadeIn = [CCFadeIn actionWithDuration:1.0f];

    [playerSprite runAction:actionFadeIn];

    


 CCFadeOut


    // 淡出:在指定的时间内(1s),将透明度设置为0.

id actionFadeOut = [CCFadeOut actionWithDuration:1.0f];

    [playerSprite runAction:actionFadeOut];


 CCFadeTo

    

    // 指定透明度:在指定的时间内(1s),将透明度设置为指定值(200.

    id actionFadeTo=[CCFadeTo actionWithDuration:1.0f opacity:200];

    [playerSprite runAction:actionFadeTo];


色彩 相关的基本动作

CCTintTo

// 在指定的时间内,指定相应的颜色

    id actionTintTo= [CCTintTo actionWithDuration:2 red:255 green:0 blue:255];

    [playerSprite runAction:actionTintTo];

    


CCTintBy


    // 在指定的时间内,指定相应的颜色的偏移量

id actionTintBy = [CCTintBy actionWithDuration:2 red:-127 green:-255 blue:-127];

    [playerSprite runAction:actionTintBy];


翻转 相关的基本动作

CCFlipX

// 沿X轴翻转

    id actionFlipX=[CCFlipX actionWithFlipX:YES];

    [playerSprite runAction:actionFlipX];


CCFlipY

    

    // 沿Y轴翻转

    id actionFlipY=[CCFlipY actionWithFlipY:YES];

    [playerSprite runAction:actionFlipY];


mark!!!
先写到这里吧!Cocos2d有很多的动画效果!以上这些只是基本的一些动画!

但是,在实际应用中,单一的动画无法完成我们需要种种绚丽的动画效果!这样就需要我们将各个单一动画组合起来使用!做成一个连续的 组合动画

那么,我们就开始组合吧!
其实很简单!

------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------

CCSequence 动画
CCSequence可以让精灵执行顺序多个动画。 CCSequence执行动画的顺序,按照添加到中的顺序。

上例子:

 

// 动画队列

    id actionMoveBy = [CCMoveBy actionWithDuration:2 position:ccp(0,winSize.height/2)];// 移动动画

    id actionBlink= [CCBlink actionWithDuration:3 blinks:10];

    

    id actionMoveBy_back = [actionMoveBy reverse];// 得到某一动画的相反的动画效果

    id actionBlink_back = [actionBlink reverse];

    // 可以加N多的动画

id seq = [CCSequence actions:actionMoveBy, actionBlink,actionMoveBy_back,actionBlink_back, nil];

[playerSprite runAction:seq];


1.首先实例化需要的各个单个动画。
2.添加到动画队列CCSequence中。
3.runAction动画。

CCSpawn

// CCSpawn让精灵的若干个动画,同时执行。

    id actionMoveBy = [CCMoveBy actionWithDuration:2position:ccp(0,winSize.height/2)];// 移动动画

    id actionBlink= [CCBlink actionWithDuration:3 blinks:10];

    id actionSpawn=[CCSpawn actions:actionMoveBy,actionBlink, nil];

    [playerSprite runAction:actionSpawn];


CCRepeat

id actionMoveBy = [CCMoveBy actionWithDuration:2 position:ccp(0,50)];// 移动动画

    id actionBlink= [CCBlink actionWithDuration:3 blinks:10];

    id seq = [CCSequence actions:actionMoveBy, actionBlink, nil];

    // CCRepeat让精灵重复执行某个动画若干次

    [playerSprite runAction:[CCRepeat actionWithAction:seq times:5]];


CCRepeatForever

// 让精灵一直执行某个动画(循环无数次)

    [playerSprite runAction:[CCRepeatForever actionWithAction:seq]];


CCEase
CCEaseXXX动画是一些列的特效动画。有很多中;能够让原来的动画增加特殊的效果

// CCEaseXXX 动画是一系列的特效动画,让原来的动画增加了些特效;以后可以慢慢研究

    id actionMoveTo = [CCMoveTo actionWithDuration2 position:ccp(winSize.width/2, winSize.height/2)];

    id actionScaleTo = [CCScaleTo actionWithDuration2 scale:2];

    // CCEaseBounceOut特效

    id actionEase=[CCEaseBounceOut actionWithAction:actionMoveTo];

    id actionSeq=[CCSequence actions:actionEase,actionScaleTo,nil];

    [playerSprite runAction:[CCRepeatForever actionWithAction:actionSeq]];


CCCallBlockN
动画执行完成后做的一些额外的Block

// 调用的Block,使用该Block,可以在动画执行完成后,做一些额外的操作:比如让精灵消失,重新定位,甚至是再执行某些额外的动画等等

    id callback = [CCCallBlockN actionWithBlock:^(id sender){

                       CCSprite *sp = (CCSprite*)sender;

                        id actionScaleBy = [CCScaleBy actionWithDuration:2  scaleX:1scaleY:10];

                        [sp runAction:actionScaleBy];

        

                   }];

    

    id actionSeq=[CCSequence actions:actionEase,actionScaleTo,callback,nil];

    [playerSprite runAction:actionSeq];



CCDelayTime

执行一个延迟时间动画。作用是让动画停止指定的时间

id actionDelayTime= [CCDelayTime actionWithDuration:5];

    id seq = [CCSequence actions:actionDelayTime, actionMoveTo,actionScaleTo, nil];

    [playerSprite runAction:[CCRepeatForever actionWithAction:seq]];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值