一般來說還是會以設計為主,用拉時間軸的方式來做,感覺比較省時跟省力
但真的是這樣嗎??
我倒是覺得有些動作用程式來處理還是會方便些,尤其常常會換來換去或修改的影片
這邊就分享一下如何讓影片做一些連續動作
(倒不是說拉動畫不好,其實要交互配合)
還是使用Tweener,真是太好用了
之前介紹Tweener的參數(請參考這裡),是以控制影片屬性為主,底下幾個的幾個屬性是Tweener的在開始動作或完成動作可以使用的屬性,我們就使用onComplete來完成影片的連續動作
delay:延遲幾秒開始 onStart:一開始動作呼叫的function onStartParams:一開始動作傳入的參數 onComplete:完成動作呼叫的function onCompleteParams:完成動作傳入的參數
1.控制影片做連續的動作,使用onComplete,當動作完成接下去作其它的動作
code1:
import caurina.transitions.Tweener; Tweener.addTween(a_mc, {x:400, y:200, time:1, onComplete:onCom}); function onCom():void { Tweener.addTween(a_mc, {x:400, y:50, time:1}); }
解說:a_mc跑到坐標(400,200)完成後會呼叫onCom這個function,然後再執行a_mc跑到坐標(400,50)
2.上一個步驟完成了連續二個動作,但通常動畫是一直重覆動作的,所以要還要再調整。
用一個陣列把動作的作標存起來,a_mc照著陣列裡的坐標跑,改寫成這樣
code2:
import caurina.transitions.Tweener; /** * motinXY:連續動作的作標 * currentMotion:目前的作標位置 * @author Jim */ var motionXY:Array = [[400, 200], [400,50], [100, 300], [80, 80]]; var currentMotion:int = 0; /** * 完成動作後呼叫的function */ function onCom():void { //跑完要回到第一個 if( currentMotion >= motionXY.length ){ currentMotion = 0; } var X:int = motionXY[currentMotion][0]; var Y:int = motionXY[currentMotion][1]; Tweener.addTween(a_mc, {x:X, y:Y, time:1, onComplete:onCom}); currentMotion++; } //開始動作 Tweener.addTween(a_mc, {x:motionXY[currentMotion][0], y:motionXY[currentMotion][1], time:1, onComplete:onCom});
3.這樣就完成了一個影片的連續動作,如果要更改或增加移動坐標只要對motionXY處理就好了。當然這只是一小步,再配合旋轉或大小變化就更生動了。
Source Download
0 意見:
張貼留言