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