一般來說還是會以設計為主,用拉時間軸的方式來做,感覺比較省時跟省力
但真的是這樣嗎??
我倒是覺得有些動作用程式來處理還是會方便些,尤其常常會換來換去或修改的影片
這邊就分享一下如何讓影片做一些連續動作
(倒不是說拉動畫不好,其實要交互配合)
還是使用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 意見:
張貼留言