cocos2d_x+lua【6.2】 -Action运用之延时动作
cocos2d_x+lua【6.2】 ------Action使用之延时动作
cocos2d-x提供以下延时动作:
CCGridAction是所有网格动作的基类、他有两个派生类、
CCTiledGrid3DAction:基于Tiled的网格动作、CCGrid3DAction:普通网格动作
通过CCActionEase类系和CCSpeed类、我们可以很方便地改变精灵执行动作的快慢
oDustGgg个人原创、欢迎转载、转载请注明出处、http://blog.****.net/odustggg/article/details/8187843
参考文献:http://cn.cocos2d-x.org/document
一、延时概念
需要一定时间才能完成的动作、所以几乎所有的延时动作都使用执行时间作为参数、延时动作的共同基类是CCActionInstant类cocos2d-x提供以下延时动作:
CCMoveTo:移动到、CCMoveBy:移动 CCRotateTo:旋转到、CCRotateBy:旋转 CCScaleTo:缩放到、CCScaleBy:缩放 CCSkewTo:切变到、CCSkewBy:切变 CCTintTo:颜色渐变到、CCTintBy:颜色渐变 CCFadeIn: 淡入、CCFadeOut: 淡出CCFadeTo:改变不透明度到 CCBlink:闪耀 设置闪烁次数 CCJumpTo:跳跃到、CCJumpBy:跳跃 设置跳跃高度和次数 CCBezierTo:贝塞尔曲线到、CCBezierBy:贝塞尔曲线
二、一些修饰动作类
1、CCRepeat:重复执行几次
local repeatAction = CCRepeat:actionWithAction(CCSequence:actionsWithArray(actions), 5)
2、CCRepeatForever:永久执行
3、CCSequence:按序列执行
local actions = CCArray:array() actions:addObject(CCFadeOut:actionWithDuration(1)) actions:addObject(CCFadeIn:actionWithDuration(1)) sprite:runAction(CCRepeatForever:actionWithAction(CCSequence:actionsWithArray(actions)))
4、CCSpawn:同时执行
同步执行最后完成的时间由基本动作中用时最大者决定action1 = CCMoveTo:actionWithDuration(2, ccp(50, 50)) action2 = CCRotateTo:actionWithDuration(2, 180) action3 = CCScaleTo:actionWithDuration(1, 4) action4 = CCScaleBy:actionWithDuration(1, 0) sequence = CCSequence:actions(action3, action4) sprite:runAction(CCSpawn:actions(action1, action2, sequence))
5、CCReverseTime 反动作
形成一种循环、CCxxxTo类通常不支持反动作,而CCXxxxBy类通常支持moveTo = CCMoveTo:actionWithDuration(2, ccp(50, 50)) sequence = CCSequence:actions(moveTo,CCReverseTime:actionWithAction(moveTo))
6、CCAnimate 动画类
local action = CCAnimate:actionWithAnimation(animation) sprite:runAction(CCRepeat:actionWithAction(action, 10))
7、CCDelayTime 延时等待类
action1 = CCMoveBy:actionWithDuration(1.2, ccp(200, 200)) action2 = CCMoveBy:actionWithDuration(1.2, ccp(200, 200)) sprite->runAction(CCSequence:actions(action1, CCDelayTime:actionWithDuration(1),action2))
8、CCProgressFromTo与CCProgressTo 进度动作
进度动作的执行节点为CCProgressTimer、而不是我们常用的CCSprite--时间 百分比 to1 = CCProgressTo::actionWithDuration(2, 100); leftToRight = CCProgressTimer:progressWithFile( “123.png”) leftToRight:setScale(0.95) leftToRight:setAnchorPoint(CCPointMake(0.5, 0.5)) leftToRight:setPosition(PT(WINSIZE.width/2,60)) --顺时针、逆时针、左、右、上、下(枚举 0 1 2...) leftToRight:setType(Type) leftToRight->runAction( CCRepeatForever::actionWithAction(to1))
9、CCGridAction 网格动作类集
网格动作,是一种特殊的变换效果、类似于特效、可以实现全屏幕的,翻转,抖动,震荡,水波纹等。CCGridAction是所有网格动作的基类、他有两个派生类、
CCTiledGrid3DAction:基于Tiled的网格动作、CCGrid3DAction:普通网格动作
三、补间动画(速度变化)
基本动作和组合动作实现了针对精灵的各种运动和动画效果、但它们的速度通常是恒定不变的通过CCActionEase类系和CCSpeed类、我们可以很方便地改变精灵执行动作的快慢
CCEaseIn - 由慢至快(速度线性变化) CCEaseOut - 由快至慢 CCEaseInOut - 由慢至快再由快至慢 CCEaseSineIn - 由慢至快(速度正弦变化) CCEaseSineOut - 由快至慢 CCEaseSineInOut - 由慢至快再由快至慢 CCEaseExponentialIn - 由慢至极快(速度指数级变化) CCEaseExponentialOut - 由极快至慢 CCEaseExponentialInOut - 由慢至极快再由极快至慢 CCSpeed - 人工设定速度,还可通过setSpeed不断调整