Action示例:
1、移動動作
cc.MoveBy:create(time, posX, posY) 在time時間內,相對當前位置基礎上移動x,y個單位。
cc.MoveTo:create(time, posX, posY) 在time時間內,移動到cc.p(posX, posY)位置。
2、縮放動作
cc.ScaleBy:create(time, scaleX, scaleY) 在time時間內,相對當前大小縮放scale(scaleX, scaleY)個單位
cc.ScaleTo:create(time, scaleX, scaleY) 在time時間內,縮放到scale(scaleX, scaleY)大小
3 斜歪動作 (skew 和 rotate 的區別是一個是壓縮傾斜旋轉(形狀會變), 一個是正常旋轉(形狀不變))
cc.SkewTo:create(time, angleX, angleY) 在time時間內,壓縮傾斜至angleX, angleY角度 (形狀會變)
cc.SkewBy:create(time, angleX, angleY) 在time時間內,相對當前角度壓縮傾斜angleX, angleY角度(形狀會變)
4、旋轉動作
cc.RatoteTo:create(time, angleX, angleY) 在time時間內,旋轉至angleX, angleY角度(形狀不變)
cc.RatoteBy:create(time, angleX, angleY) 在time時間內,相對當前角度旋轉angleX, angleY角度(形狀不變)
5、變色動作
cc.TintTo:create(time, colorR, colorG, colorB) --第一個參數代表時間, 2-4參數代表顏色RGB
6、 閃爍運動
cc.Blink:create(time,num) -- 創建兩個閃爍動作,第一個參數為持續時間,第二個參數為閃爍次數
7、球面旋轉 OrbitCamera類 (action視角按照球面坐標軌跡 圍繞屏幕中心進行旋轉)
cc.OrbitCamera:create(2, 1, 0, 0, 180, 0, 0) -- 創建一個帶有起始半徑、半徑差、起始z角、旋轉z角的差、起始x角、旋轉x角的差 這些參數的運動視角動作類
總結:xxxTo移動到絕對位置, xxxBy移動一個相對位置, 並且所有的xxxBy動作都有對應的reverse方法。
代碼示例:
1 local ActionTest = class("ActionTest", BaseView) 2 3 function ActionTest:ctor() 4 self.root = cc.Layer:create() 5 self:addToUiGroup(self.root) 6 UITools.alignCenter(self.root) 7 end 8 9 -------------------------------------- 10 -- ActionSkewRotate 11 -- 歪斜+旋轉+縮放+變色+閃爍 12 -- skew 和 rotate 的區別是一個是傾斜旋轉, 一個是正常旋轉 13 -------------------------------------- 14 function ActionTest:ActionSkewRotate() 15 16 -- 盒子大小 17 local boxSize = cc.size(200.0, 200.0) 18 -- 層顏色,第1、2、3分別為紅綠籃顏色值,第4個為透明度值 19 local box = cc.LayerColor:create(cc.c4b(255, 255, 0, 255)) 20 -- 設置錨點 21 box:setAnchorPoint(cc.p(0, 0)) 22 -- 設置位置 23 box:setPosition(0, 0) 24 -- 設置內容大小 25 box:setContentSize(boxSize) 26 27 --標記大小 28 local markrside = 30.0 29 local uL = cc.LayerColor:create(cc.c4b(255, 0, 0, 255)) 30 box:addChild(uL) 31 uL:setContentSize(cc.size(markrside, markrside)) 32 uL:setPosition(0, boxSize.height - markrside) 33 uL:setAnchorPoint(cc.p(0, 0)) 34 35 local uR = cc.LayerColor:create(cc.c4b(0, 0, 255, 255)) 36 box:addChild(uR) 37 uR:setContentSize(cc.size(markrside, markrside)) 38 uR:setPosition(boxSize.width - markrside, boxSize.height - markrside) 39 uR:setAnchorPoint(cc.p(0, 0)) 40 self.root:addChild(box) 41 42 -- 斜歪動作 43 local skewTo = cc.SkewTo:create(2, 0, 10) 44 45 --旋轉動作 46 local rotateTo = cc.RotateTo:create(2, 61, 0) 47 48 --縮放動作 49 local actionScaleTo = cc.ScaleTo:create(2, -0.44, 0.47) 50 51 --變色動作 52 local tinkTo = cc.TintTo:create(2, -127, -255, -127) 53 54 -- 閃爍運動 55 local blink = cc.Blink:create(2,5) 56 57 -- OrbitCamera類 :action 視角按照球面坐標軌跡 圍繞屏幕中心進行旋轉 58 -- 創建一個帶有起始半徑、半徑差、起始z角、旋轉z角的差、起始x角、旋轉x角的差 這些參數的運動視角動作類 59 -- local orbitTo = cc.OrbitCamera:create(2, 1, 0, 0, 180, 0, 0) 60 61 local actionScaleToBack = cc.ScaleTo:create(2, 1.0, 1.0) 62 local rotateToBack = cc.RotateTo:create(2, 0) 63 local skewToBack = cc.SkewTo:create(2, 0, 0) 64 local tinkBack = cc.TintTo:create(2, 255, 255, 0) 65 66 local spawnTo = cc.Spawn:create(skewTo, rotateTo, actionScaleTo, tinkTo, blink) 67 local spawnBack = cc.Spawn:create(actionScaleToBack, rotateToBack, skewToBack, tinkBack) 68 local sequence = cc.Sequence:create(spawnTo, spawnBack) 69 box:runAction(cc.RepeatForever:create(sequence)) 70 71 end 72 73 return ActionTest