cocos2d_x+lua【6.2】 ------Action使用之延时动作

本文出自 “DustGgg” 博客,请务必保留此出处 http://blog.csdn.net/odustggg/article/details/8187843

一、延时概念

需要一定时间才能完成的动作、所以几乎所有的延时动作都使用执行时间作为参数、延时动作的共同基类是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不断调整

标签: none

?>