摘 要: 主要在Flash CS3環(huán)境中使用ActionScript3.0腳本語言的flash.geom.Matrix類動(dòng)態(tài)變換影片剪輯的形狀。
關(guān)鍵詞: Flash; ActionScript; Matrix類
與其他動(dòng)畫制作軟件相比,F(xiàn)lash制作的動(dòng)畫容量小、操作方便,綠色免安裝,極易在網(wǎng)絡(luò)中傳播。
ActionScript是Flash的專用腳本語言,采用面向?qū)ο蟮木幊趟枷搿=柚贏ctionScript能夠制作出更為細(xì)膩、逼真的動(dòng)畫。Flash CS3是Adobe公司收購Macromedia公司后將Macromedia Flash更名為Adobe Flash后的首款動(dòng)畫軟件。從Flash CS3版本開始,以動(dòng)畫中的關(guān)鍵幀作為對(duì)象來對(duì)ActionScript進(jìn)行定義和編寫,以幫助用戶按照自己的意愿更加精確地創(chuàng)建動(dòng)畫,實(shí)現(xiàn)自己的意圖。ActionScript由Flash Player中的ActionScript虛擬機(jī)(AVM)來解釋執(zhí)行,其代碼通常被編譯器編譯成“字節(jié)碼格式”,字節(jié)碼嵌入SWF文件中,SWF文件由運(yùn)行時(shí)環(huán)境Flash Player執(zhí)行。ActionScript已從1.0發(fā)展到如今的3.0版本,虛擬機(jī)也從AVM發(fā)展為支持ActionScript 3.0的新一代AVM2,其執(zhí)行速度是之前ActionScript版本的10倍。ActionScript 3.0旨在方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫的高度復(fù)雜應(yīng)用程序[1]。
本文主要闡述在Flash CS3中使用ActionScript3.0腳本語言的Flash.geom.Matrix類來實(shí)現(xiàn)影片剪輯形狀的動(dòng)態(tài)變換。
1 Flash.geom 包和Matrix類
1.1 Flash.geom 包
Flash.geom包中包含多個(gè)類,例如點(diǎn)、矩形和轉(zhuǎn)換矩陣。這些類支持 BitmapData類和位圖緩存功能,也用于處理幾何圖形,它們是處理圖形顯示、使用圖形效果及濾鏡的基礎(chǔ)。有關(guān)每個(gè)類的信息如表1所示。
1.2 Matrix類
Flash.geom.Matrix類的方法基本對(duì)應(yīng)于Flash CS3環(huán)境中的“信息”面板和“變形”面板,即可以使用Matrix類的方法以代碼的方式實(shí)現(xiàn)相同的效果。Matrix類表示一個(gè)轉(zhuǎn)換矩陣,它確定如何將點(diǎn)從一個(gè)坐標(biāo)空間映射到另一個(gè)坐標(biāo)空間。可以對(duì)顯示對(duì)象執(zhí)行不同的圖形轉(zhuǎn)換,方法是設(shè)置Matrix 對(duì)象的屬性,將該Matrix對(duì)象應(yīng)用于Transform對(duì)象的Matrix屬性,然后應(yīng)用該Transform對(duì)象作為顯示對(duì)象的Transform屬性。這些轉(zhuǎn)換函數(shù)包括平移(x和y重新定位)、旋轉(zhuǎn)、縮放和傾斜。
若要對(duì)顯示對(duì)象應(yīng)用轉(zhuǎn)換矩陣,首先要?jiǎng)?chuàng)建一個(gè)Transform對(duì)象,將其Matrix屬性設(shè)置為轉(zhuǎn)換矩陣,然后將顯示對(duì)象的Transform屬性設(shè)置為Transform對(duì)象。Matrix對(duì)象也可用做某些方法的參數(shù)。
使用new Matrix()構(gòu)造函數(shù)創(chuàng)建Matrix對(duì)象后,才能調(diào)用Matrix對(duì)象的屬性和方法。
(1)構(gòu)造函數(shù):
public 函數(shù) Matrix(a:Number=1,b:Number=0,c:Number=0, d:Number=1,tx:Number=0,ty:Number=0)
參數(shù)說明:
a:Number :新Matrix對(duì)象的第一行第一列的值。
b:Number :新Matrix對(duì)象的第一行第二列的值。
c:Number :新Matrix對(duì)象的第二行第一列的值。
d:Number :新Matrix對(duì)象的第二行第二列的值。
tx:Number :新Matrix對(duì)象的第一行第三列的值。
ty:Number :新Matrix對(duì)象的第二行第三列的值。
(2)使用指定參數(shù)創(chuàng)建新的Matrix對(duì)象。在矩陣表示法中,按如下方式組織屬性:
a b txc d ty0 0 1
如果不向 new Matrix( )構(gòu)造函數(shù)提供任何參數(shù),它將創(chuàng)建一個(gè)具有如下取值的恒等矩陣:a=1,b=0,c=0,d=1,tx=0,ty=0。
(3)Matrix 類支持四種主要類型的轉(zhuǎn)換:平移、縮放、旋轉(zhuǎn)和傾斜,如表2所示。
每個(gè)轉(zhuǎn)換函數(shù)都將更改當(dāng)前矩陣的屬性,所以可以有效地合并多個(gè)轉(zhuǎn)換。為此,在將矩陣應(yīng)用于影片剪輯或位圖目標(biāo)之前應(yīng)調(diào)用多個(gè)轉(zhuǎn)換函數(shù)。
2 使用Matrix類[3]動(dòng)態(tài)變換影片剪輯形狀的實(shí)例
現(xiàn)通過“信息”面板和“變形”面板及Matrix類兩種方式實(shí)現(xiàn)影片剪輯形狀的變換,即通過兩種方式實(shí)現(xiàn)影片剪輯的放大(如放大1.5倍)及旋轉(zhuǎn)(如旋轉(zhuǎn)45°)。具體實(shí)現(xiàn)步驟為:
(1)新建一個(gè)Flash文檔,設(shè)置其舞臺(tái)大小為550×350像素,背景為白色。
(2)導(dǎo)入一張圖片到舞臺(tái),圖片大小設(shè)置為80×80像素,選中該圖片點(diǎn)擊鼠標(biāo)右鍵,將其轉(zhuǎn)化為影片剪輯,元件名為“mouse”,并在舞臺(tái)中靠左側(cè)放置(如圖1最左側(cè)所示),已備參照之用。
影片剪輯實(shí)例“my”變化前后對(duì)比如圖3、圖4箭頭所示。
(4)再次從庫中拖入一個(gè)影片剪輯mouse,實(shí)例命名為“myClip”,靠舞臺(tái)右側(cè)放置(如圖4最右側(cè)所示),選中圖層中的第1幀,打開“動(dòng)作”面板,輸入如下代碼:
import flash.geom.Matrix;
import flash.geom.Transform;
var myTransform:Transform = new Transform(myClip);
var scaleMatrix:Matrix = new Matrix();
//將myClip放大1.5倍
scaleMatrix.scale(1.5, 1.5);
var rotate45Matrix:Matrix = new Matrix();
//將myClip旋轉(zhuǎn)45°
rotate45Matrix.rotate((45/180)*Math.PI);
var translateMatrix:Matrix = new Matrix();
//可以使其移動(dòng)一定距離
translateMatrix.translate(400, 100);
var scaleAndRotateMatrix:Matrix = scaleMatrix.clone();
//連接矩陣效果
scaleAndRotateMatrix.concat(rotate45Matrix);
scaleAndRotateMatrix.concat(translateMatrix);
//應(yīng)用效果
myTransform.matrix = scaleAndRotateMatrix;
(5)保存文檔,執(zhí)行Ctrl+Enter,測(cè)試影片剪輯mouse形狀的變化,如圖5所示。
由上可以得出結(jié)論:使用Flash CS3中“信息”面板及“變形”面板的設(shè)置和與使用Matrix類方法實(shí)現(xiàn)的效果是相同的。
ActionScript腳本語言是Flash環(huán)境中制作效果逼真動(dòng)畫不可或缺的重要部分。ActionScript是針對(duì)Flash Player運(yùn)行時(shí)環(huán)境的編程語言,它用于處理各種人機(jī)交互和數(shù)據(jù)交互等功能,現(xiàn)在主要采用的版本是ActionScript3.0。ActionScript3.0與Flash CS3(或以上版本)相結(jié)合,可以創(chuàng)建出各種不同的應(yīng)用特效,實(shí)現(xiàn)豐富多彩的動(dòng)畫效果。本文中使用ActionScript3.0的Flash.geom.Matrix類實(shí)現(xiàn)影片剪輯的動(dòng)態(tài)變換效果。Flash中專業(yè)制作動(dòng)畫者可以借助于ActionScript3.0,制作出更加逼真、交互性極強(qiáng)的復(fù)雜動(dòng)畫,體現(xiàn)絕美意境。
參考文獻(xiàn)
[1] 陳銀鳳. Flash中利用ActionScript3.0實(shí)現(xiàn)圖像的扭曲效果[J].微型機(jī)與應(yīng)用,2012,31(16):35-37.
[2] 王傳華. Flash MX 2004實(shí)例教程[M].北京:清華大學(xué)出版社,2004.
[3] 張亞飛. Flash ActionScript 3.0開發(fā)王[M].北京:電子工業(yè)出版社,2008.