今天得空研究游戏,简要总结一下这段时间以来用到的cocos2d动作接口。
1)延时动作(CCIntervalAction )
CCDelayTime:延时
[CCDelayTime actionWithDuration:1]
CCMoveTo :移动到
[CCMoveTo actionWithDuration:2 position:ccp(s.width - 50, s.height - 50) ]
CCMoveBy:移动
[CCMoveBy actionWithDuration:2 position:ccp(-50, -50)]
CCJumpTo:跳跃到 -设置终点位置和跳跃癿高度和次数
[CCJumpTo actionWithDuration:2 position:ccp(150, 50) height:30 jumps:5]
CCJumpBy :跳跃 – 设置终点位置和跳跃癿高度和次数
[CCJumpBy actionWithDuration:2 position:ccp(100, 100) height:30 jumps:5]
CCScaleTo:放大到
[CCScaleTo actionWithDuration:2 scale:4]
CCScaleBy:放大
[CCScaleBy actionWithDuration:2 scale:0.5]
CCRotateTo:旋转到
[CCRotateTo actionWithDuration:2 angle:180]
CCRotateBy:旋转
[CCRotateBy actionWithDuration:2 angle:-180]
CCFadeTo:变暗到
[CCFadeTo actionWithDuration: 1 opacity:80]
CCFadeIn:由无变亮
[CCFadeIn actionWithDuration:1.0f]
CCFadeOut:由亮变无
[CCFadeOut actionWithDuration:1.0f]
2)组合动作
CCSequence:线序排列若干个劢作,然后按先后次序逐个执行
[CCSequence actions:ac0, ac1, ac2, ac3, ac4, ac0, nil]
CCSpawn:同时并列执行若干个劢作,但要求劢作都必须 是可以同时执行癿。比如:移劢式翻转、变色、变大小等。
[CCSpawn actions:ac1, ac2, seq, nil]
CCRepeat:重复有限次数的动作
[CCRepeat actionWithAction:seq times:3]
reverse:反动作就是反向(逆向)执行某个动作,支持针对动作序列的反动作序列不是所有的类都支持反动作,XxxxTo 类通常不支持反动作,XxxxBy 类通常支持
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(190, 220)];
id ac2 = [ac1 reverse];
CCAnimate:动画就是让精灵自身癿连续执行一段影像,形成模拟运动的效果:行走时的精灵状态、打斗时的状态等
[CCAnimate actionWithAnimation: animation]
CCRepeatForever:无限期执行某个动作或动作序列,直到被停止
[CCRepeatForever actionWithAction:action]
3)速度变化
EaseIn: 匀加速
[CCEaseIn actionWithAction:ac rate:3]
EaseOut: 匀减速
[CCEaseOut actionWithAction:ac rate:3]
EaseInOut: 先匀加速后匀减速
[CCEaseInOut actionWithAction:ac rate:3]
EaseSineIn: 变加速(正弦)
[CCEaseSineIn actionWithAction:ac]
EaseSineOut: 变减速(正弦)
[CCEaseSineOut actionWithAction:ac]
EaseSineInOut: 先变加速后变减速(正弦)
[CCEaseSineInOut actionWithAction:ac]
EaseExponentialIn: 变加速(由慢至极快)
[CCEaseExponentialIn actionWithAction:ac]
EaseExponentialOut: 变减速(由极快至慢)
[CCEaseExponentialOut actionWithAction:ac]
EaseExponentialInOut: 先变加速后变减速(由慢至极快再由极快至慢)
[CCEaseExponentialInOut actionWithAction:ac]
4)函数扩展
通过实现了动作、动作序列的任意扩展和连接。
CCCallFunc-无参数函数:在动作序列中间或者结束调用某个函数,执行任何需要执行的任务:动作、状态修改等。
[CCCallFunc actionWithTarget:self selector:@selector(CallBack1)
CCCallFuncN-带对象参数 调用自定义函数时,传递当前对象。
[CCCallFuncN actionWithTarget:self selector:@selector(CallBack2:)
CCCallFuncND -带对象、数据参数 调用自定义函数时,传递当前对象和一个常量(也可以是指针)。
[CCCallFuncND actionWithTarget:self selector:@selector(CallBack3:data:) data:(void*)2]
上面参考知易教程简要介绍了cocos2d中常用的动作接口,下面是我自己总结几种动画实现思路,希望对大家有所帮助。
1)冰糖葫芦法:像管道工中水管接通后水流过的动画,还有移车位车子的从house1走到house10的动画,这些必须将连贯整体的动画碎片话,最后像冰糖葫芦一样串在一起,每个连节点上计算下一步的状态和入口。
2)递归法:很多背景动画都是循环播放的,比如白云飘过,鱼儿游过。像这类的动画可以通过在动画回调函数中递归调用自己来实现。
3)组合运动法:高中物理有介绍任何运动都是可以分解的,比如螺旋运动吧,就可以分解成圆周运动和一个匀速运动。cocos2d中通过CCSpawn组合。
4)内嵌法:像移车位选管页面中有个气球动画:气球里面有个房间号,房间号是动态变化的,动画要求气球和房间号整体飘动效果)。气球用的是CCSprite,房间号是CCLabel,我们将CCLabel嵌入CCSprite,然后直接操作CCSprite就可以实现整体效果。
5)其他:还有一些方法,以后再继续提炼吧。