摘 要:主要在FlashCS3环境中使用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.