目录
常用动作
移动MoveTo、MoveBy
MoveTo:
local moveAction = cc.MoveTo:create(1, cc.p(100, 100)) -- 参数1:动作持续的时间(float) 参数2:终点位置
MoveBy:
local moveAction = cc.MoveBy:create(1, cc.p(100, 100)) -- 参数1:动作持续的时间 参数2:以节点当前位置为(0, 0)进行移动的终点位置
ps:To和By的区别
To:动作开始的状态(位置、大小、角度等属性)为节点的初始状态(节点最初的状态)
By:动作开始的状态为节点的当前状态(可能已经进行过移动、缩放、旋转等操作)
缩放ScaleTo、ScaleBy
ScaleTo:
local scaleAction1 = cc.ScaleTo:create(1, 2) -- 参数1:动作持续的时间 参数2:缩放的比例(x、y同比缩放)
or
local scaleAction2 = cc.ScaleTo:create(1, 2, 2.5) -- 参数1:动作持续的时间 参数2:x缩放的比例 参数3:y缩放的比例
ScaleBy:
local scaleAction1 = cc.ScaleBy:create(1, 2)
or
local scaleAction2 = cc.ScaleBy:create(1, 2, 2.5)
旋转RotateTo、RotateBy
RotateTo:
local rotateAction = cc.RotateTo:create(1, 90) -- 参数1:动作持续的时间 参数2:旋转的角度(以z为轴)
RotateBy:
local rotateAction = cc.RotateBy:create(1, 90)
淡入淡出FadeIn、FadeOut
FadeIn:
local fadeInAction = cc.FadeIn:create(2) -- 参数:动作持续的时间
FadeOut:
local fadeOutAction = cc.FadeOut:create(2)
ps:设置透明度setOpacity(0),值为0-255!
闪烁Blink
local blinkAction = cc.Blink:create(1, 5) -- 参数1:动作持续的时间 参数2:闪烁的次数
延时DelayTime
local delayTimeAction = cc.DelayTime:create(0.5) -- 参数:动作持续的时间
回调CallFunc
local callFuncAction = cc.CallFunc:create(function()
-- TODO
end) -- 参数:回调函数
重复动作
Repeat:有限次数的重复某个动作
local blinkAction = cc.Blink:create(1, 2) -- 1s2闪
local repeatAction = cc.Repeat:create(blinkAction, 5) -- 参数1:有限时间动作 参数2:重复的次数(int)
RepeatForever:无限次数重复某个动作
local blinkAction = cc.Blink:create(1, 1)
local repeatForeverAction = cc.RepeatForever:create(blinkAction) -- 参数:延时动作
缓冲动作
EaseIn:加速
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeInAction = cc.EaseIn:create(moveAction, 5) -- 参数1:延时动作 参数2:缓冲系数
EaseOut:减速
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeOutAction = cc.EaseOut:create(moveAction, 5)
EaseBackInOut:回震缓冲
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeBackInOutAction = cc.EaseBackInOut:create(moveAction) -- 参数:延时动作
ps:缓冲动作的种类很多,具体效果可以查看动作类之缓冲动作和组合动作的使用!
序列动作
顺序动作Sequence
一个Sequence可以包含任何数量的动作对象,回调方法和其它序列,顺序执行!
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local delayTimeAction = cc.DelayTime:create(0.5)
local scaleAction = cc.ScaleTo:create(1, 2)
local callFuncAction = cc.CallFunc:create(function()
print("Over")
end)
local sequenceAction = cc.Sequence:create(moveAction, delayAction, scaleAction, callFuncAction)
同时动作Spawn
Spawn对象可以添加任意数量的动作和其它Spawn对象,同时执行所有的动作!
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local scaleAction = cc.ScaleTo:create(1, 2)
local rotateAction = cc.RotateTo:create(2, 90) -- 放入Spawn中的动作持续的时间可以不一致
local spawnAction = cc.Spawn:create(moveAction, scaleAction, rotateAction)
动作的克隆
克隆(Clone)的功能和字面含义一样,如果你对一个Action对象使用了clone()方法,你就获得了这个Action对象的拷贝。
为什么要使用clone()方法? 因为当Action对象运行时会产生一个内部状态,记录着节点属性的改变。当你想将一个创建的动作,重复使用到不同的节点对象时,如果不用clone()方法,就无法确定这个动作的属性到底是怎样的(因为被使用过,产生了内部状态),这会造成难以预料的结果。
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local moveAction_clone = moveAction:clone()
动作的倒转
倒转(Reverse)的功能也和字面意思一样,调用reverse()可以让一系列动作按相反的方向执行。reverse()不是只能简单的让一个Action对象反向执行,还能让Sequence和Spawn倒转。
local moveAction = cc.MoveBy:create(1, cc.p(100, 100))
node:runAction(moveAction:reverse())
动作的执行
runAction():执行一个动作或动作序列
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
node:runAction(moveAction)
动作的停止
stopAllActions():停止目标节点的所有动作
node:stopAllActions()
stopActionByTag():停止目标节点的指定动作
local moveAction = cc.MoveBy:create(10, cc.p(100, 100))
moveAction:setTag(1)
local scaleAction = cc.ScaleTo:create(10, 2)
scaleAction:setTag(2)
local delayTimeAction = cc.DelayTime:create(5)
local callFuncAction = cc.CallFunc:create(function()
node:stopActionByTag(1)
end)
local sequenceAction = cc.Sequence:create(delayTimeAction, callFuncAction)
node:runAction(moveAction)
node:runAction(scaleAction)
node:runAction(sequenceAction)