目錄
常用動作
移動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)