cocos2d-lua:动作Actions的使用

目录

常用动作

移动MoveTo、MoveBy

缩放ScaleTo、ScaleBy

旋转RotateTo、RotateBy

淡入淡出FadeIn、FadeOut

延时DelayTime

回调CallFunc

重复动作

缓冲动作

序列动作

顺序动作Sequence

同时动作Spawn

动作的克隆

动作的倒转

动作的执行

动作的停止


常用动作

移动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!

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)

ps:关于动作官网最新的文档API

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fightsyj

您的鼓励将是我分享的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值