Flash ActionScript 3.0 语言和组件参考Matrix_第1页
Flash ActionScript 3.0 语言和组件参考Matrix_第2页
Flash ActionScript 3.0 语言和组件参考Matrix_第3页
Flash ActionScript 3.0 语言和组件参考Matrix_第4页
Flash ActionScript 3.0 语言和组件参考Matrix_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 页共17页包flash.geom类publicclassMatrix继承MatrixObject语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9Matrix类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间。您可以对一个显示对象执行不同的图形转换,方法是设置Matrix对象的属性,将该Matrix对象应用于Transform对象的matrix属性,然后应用该Transform对象作为显示对象的transform属性。这些转换函数包括平移(x和y重新定位)、旋转、缩放和倾斜。这些转换类型统称为仿射转换。仿射转换在转换时保持线条笔直,

2、因此平行线保持平行。若要对显示对象应用转换矩阵,请创建一个Transform对象,将其matrix属性设置为转换矩阵,然后将显示对象的transform属性设置为Transform对象。Matrix对象也被用作某些方法的参数,例如以下方法:BitmapData对象的draw()方法Graphics对象的beginBitmapFill()方法、beginGradientFill()方法或lineGradientStyle()方法转换矩阵对象为具有如下内容的3x3的矩阵:abtxcdty在传统的转换矩阵中,u、v和w属性具有其它功能。Matrix类只能在二维空间中操作,因此始终假定属性值u和v为0

3、.0,属性值w为1.0。矩阵的有效值如下:日bCdty001您可以获取和设置Matrix对象的全部六个其它属性的值:a、b、c、d、tx和ty。Matrix类支持四种主要类型的转换:平移、缩放、旋转和倾斜。您可以使用特定的方法来设置这些转换的其中三个,如下表中所述:转换方法矩阵值显示结果说明平移(置换)translate(tx.ty)10tx01ty001o将图像tx像素向右移动,将ty像素向下移动。缩放scale(sx.sy)sx00Sy001将每个像素的位置乘以X轴的sx和,轴的sy,从而调整图係的大小。施转rotate(q)cos(q)sin(q)0-sin(q)cos(q)0001_O

4、将图像旋转一个以度为单位的第度q.倾斜或剪切无;必须设置属性b和匸tan(skewy)0tan(skewx)001以平行于x轴或F轴的方向逐渐滑动图像。Matrix7m的b属性表示斜角沿尸轴的正切;Matrix对象的c属性表示斜角沿轴的正切。每个转换函数都将更改当前矩阵的属性,所以您可以有效地合并多个转换。为此,请先调用多个转换函数,再将矩阵应用于其显示对象目标(通过使用该显示对象的transform属性)。使用newMatrix()构造函数创建Matrix对象后,才能调用Matrix对象的方法。查看示例另请参见flash.display.DisplayObject.transformflas

5、h.geom.Transformflash.display.BitmapData.draw()flash.display.Graphics.beginBitmapFill()flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()公共属性隐藏继承的公共属性显示继承的公共属性属性定义方TOC o 1-5 h za:NumberM.缩放或旋转图像时影响像素沿x轴定位的值。MatriXb:NumberM.旋转或倾斜图像时影响像素沿y轴定位的值。rixc:NumberM.旋转或倾斜图像时影响

6、像素沿x轴定位的值。“毗riXconstruetor:Object.对类对象或给定对象实例的构造函数的引用。d:Number缩放或旋转图像时影响像素沿y轴定位的值。prototype:Object静态对类或函数对象的原型对象的引用。方法MatrixMatrixtx:Number沿x轴平移每个点的距离。ty:Number沿y轴平移每个点的距离。公共方法隐藏继承的公共方法显示继承的公共方法定义方Matrix(a:Number二1,b:Number二0,c:Number二0,d:Number二1,tx:Number=0,ty:Number=0)Matrix使用指定参数创建新的Matrix对象。clo

7、ne():Matrix返回一个新的Matrix对象,它是此矩阵的克隆,带有与所含对象完全相Matrix同的副本。concat(m:Matrix):void将某个矩阵与当前矩阵连接,从而将这两个矩阵的几何效果有效地结合在Matrix一起。createBox(scaleX:Number,scaleY:Number,rotation:Number=0,tx:Number=0,ty:Number=0):voidMatrix包括用于缩放、旋转和转换的参数。createGradientBox(width:Number,height:Number,rotation:Number二0,tx:Number=0,

8、ty:Number=0):void创建Graphics类的beginGradientFill()和lineGradientStyle()方法所需的矩阵的特定样式。deltaTransformPoint(point:Point):Point如果给定预转换坐标空间中的点,则此方法返回发生转换后该点的坐标。ObjectMatrixhasOwnProperty(name:String):Boolean指示对象是否已经定义了指定的属性。identity():void为每个矩阵属性设置一个值,该值将导致null转换。invert():void执行原始矩阵的逆转换。isPrototypeOf(theClas

9、s:Object):Boolean指示Object类的实例是否在指定为参数的对象的原型链中。propertyIsEnumerable(name:String):Boolean指示指定的属性是否存在、是否可枚举。rotate(angle:Number):void对Matrix对象应用旋转转换。scale(sx:Number,sy:Number):void对矩阵应用缩放转换。setPropertyIsEnumerable(name:String,isEnum:Boolean二true):void设置循环操作动态属性的可用性。toString():String返回列出该Matrix对象属性的文本值。

10、transformPoint(point:Point):Point返回将Matrix对象表示的几何转换应用于指定点所产生的结果。translate(dx:Number,dy:Number):void沿x和y轴平移矩阵,由dx和dy参数指定。valueOf():Object返回指定对象的原始值。属性详细信息a属性publicvara:Number语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9缩放或旋转图像时影响像素沿x轴定位的值。示例下面的示例将创建Matrix对象myMatrix并设置它的a值。importflash.geom.Matrix;Obje

11、ctObjectMatrixMatrixObjectMatrixMatrixMatrixObjectvarmyMatrix:Matrix=newMatrix();trace(myMatrix.a);/1myMatrix.a=2;trace(myMatrix.a);/2b属性publicvarb:Number语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9旋转或倾斜图像时影响像素沿y轴定位的值。示例下面的示例将创建Matrix对象myMatrix并设置它的b值importflash.geom.Matrix;varmyMatrix:Matrix=newMa

12、trix();trace(myMatrix.b);/0vardegrees:Number=30;varradians:Number=(degrees/180)*Math.PI;myMatrix.b=Math.tan(radians);trace(myMatrix.b);/0.5773502691896257c属性publicvarc:Number语言版本:pt3.0运行时版本:AIR1.0,FlashPlayer9旋转或倾斜图像时影响像素沿x轴定位的值。示例下面的示例将创建Matrix对象myMatrix并设置它的c值importflash.geom.Matrix;varmyMatrix:Ma

13、trix=newMatrix();trace(myMatrix.c);/0vardegrees:Number=30;varradians:Number=(degrees/180)*Math.PI;myMatrix.c=Math.tan(radians);trace(myMatrix.c);/0.5773502691896257d属性publicvard:Number语言版本:pt3.0运行时版本:AIR1.0,FlashPlayer9缩放或旋转图像时影响像素沿y轴定位的值。示例下面的示例将创建Matrix对象myMatrix并设置它的d值。importflash.geom.Matrix;var

14、myMatrix:Matrix=newMatrix();trace(myMatrix.d);/1myMatrix.d=2;trace(myMatrix.d);/2tx属性publicvartx:Number语言版本:pt3.0运行时版本:AIR1.0,FlashPlayer9沿x轴平移每个点的距离。示例下面的示例将创建Matrix对象myMatrix并设置它的tx值importflash.geom.Matrix;varmyMatrix:Matrix=newMatrix();trace(myMatrix.tx);/0myMatrix.tx=50;/50trace(myMatrix.tx);ty属

15、性publicvarty:Number语言版本:.pt3.0运行时版本:AIR1.0,FlashPlayer9沿y轴平移每个点的距离。示例下面的示例将创建Matrix对象myMatrix并设置它的ty值importflash.geom.Matrix;varmyMatrix:Matrix=newMatrix();trace(myMatrix.ty);/0myMatrix.ty=50;trace(myMatrix.ty);/50构造函数详细信息Matrix()构造函数publicfunctionMatrix(a:Number=1,b:Number=0,c:Number=0,d:Number=1,t

16、x:Number=0,ty:Number=0)语言版本:.pt3.0运行时版本:AIR1.0,FlashPlayer9使用指定参数创建新的Matrix对象。在矩阵表示法中,按如下方式组织属性:TOC o 1-5 h z HYPERLINK l bookmark8 -abtx_Cdty HYPERLINK l bookmark16 001如果不向newMatrix()构造函数提供任何参数,它将创建一个具有以下值的恒等矩阵:a=1b=0c=0d=1tx=0ty=0在矩阵表示法中,恒等矩阵如下所示:100010 HYPERLINK l bookmark22 001参数a:Number(default

17、=1)一缩放或旋转图像时影响像素沿x轴定位的值。b:Number(default=0)一旋转或倾斜图像时影响像素沿y轴定位的值。c:Number(default=0)一旋转或倾斜图像时影响像素沿x轴定位的值。d:Number(default=1)一缩放或旋转图像时影响像素沿y轴定位的值。tx:Number(default二0)一沿x轴平移每个点的距离。ty:Number(default二0)一沿y轴平移每个点的距离。示例下面的示例通过不向Matrix()构造函数发送参数创建matrix_1,而通过向该构造函数发送参数创建matrix_2。请注意,未使用参数创建的matrix_1将生成一个具有值

18、a=1、b=0、c=0、d=1、tx=0、ty=0的恒等矩阵。importflash.geom.Matrix;varmatrix_1:Matrix=newMatrix();trace(matrix_1);/(a=1,b=0,c=0,d=1,tx=0,ty=0)varmatrix_2:Matrix=newMatrix(1,2,3,4,5,6);trace(matrix_2);/(a=1,b=2,c=3,d=4,tx=5,ty=6)方法详细信息clone()方法publicfunctionclone():Matrix语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPla

19、yer9返回一个新的Matrix对象,它是此矩阵的克隆,带有与所含对象完全相同的副本。返回Matrix一一个Matrix对象。concat()方法publicfunctionconcat(m:Matrix):void语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9将某个矩阵与当前矩阵连接,从而将这两个矩阵的几何效果有效地结合在一起。在数学术语中,将两个矩阵连接起来与使用矩阵乘法将它们结合起来是相同的。例如,如果矩阵m1使用系数4缩放某个对象,而矩阵m2使用1.5707963267949弧度(Math.PI/2)旋转该对象,则m1.concat(m2)会

20、将m1转换为一个使用系数4缩放对象并使用Math.PI/2弧度旋转该对象的矩阵。此方法将源矩阵替换为连接矩阵。如果要在不更改两个源矩阵中的任何一个的情况下连接这两个矩阵,则可以通过使用clone()方法首先复制源矩阵,如“类示例”部分中所示。参数m:Matrix一要连接到源矩阵的矩阵。createBox()方法publicfunctioncreateBox(scaleX:Number,scaleY:Number,rotation:Number=0,tx:Number二0,ty:Number二0):void语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9

21、包括用于缩放、旋转和转换的参数。当应用于矩阵时,该方法会基于这些参数设置矩阵的值。通过使用createBox()方法,您可以获得与依次应用identity()、rotate()、scale()和translate()方法时得到的矩阵相同的矩阵。例如,matl.createBox(2,2,Math.PI/4,100,100)具有与如下所示代码相同的效果:importflash.geom.Matrix;varmat1:Matrix=newMatrix();mat1.identity();mat1.rotate(Math.PI/4);mat1.scale(2,2);mat1.translate(10

22、,20);参数scaleX:Number一水平缩放所用的系数。scaleY:Number一垂直缩放所用的系数。rotation:Number(default=0)一旋转量(以弧度为单位)。tx:Number(default二0)一沿x轴向右平移(移动)的像素数。ty:Number(default二0)一沿y轴向下平移(移动)的像素数。另请参见flash.display.Graphics.beginBitmapFill()示例下面的示例通过调用myMatrix的createBox()方法来设置它的x缩放比例、缩放比例、旋转、x位置和y位置。packageimportflash.display.S

23、hape;importflash.display.Sprite;importflash.geom.Matrix;importflash.geom.Transform;publicclassMatrix_createBoxextendsSpritepublicfunctionMatrix_createBox()varmyMatrix:Matrix=newMatrix();trace(myMatrix.toString();/(a=1,b=0,c=0,d=1,tx=0,ty=0)myMatrix.createBox(1,2,Math.PI/4,50,100);trace(myMatrix.toSt

24、ring();/(a=0.7071067811865476,b=1.414213562373095,c=-0.7071067811865475,/d=1.4142135623730951,tx=100,ty=200)varrectangleShape:Shape=createRectangle(20,80,0 xFF0000);addChild(rectangleShape);varrectangleTrans:Transform=newTransform(rectangleShape);rectangleTrans.matrix=myMatrix;publicfunctioncreateRe

25、ctangle(w:Number,h:Number,color:Number):Shapevarrect:Shape=newShape();rect.graphics.beginFill(color);rect.graphics.drawRect(0,0,w,h);addChild(rect);returnrect;createGradientBox()方法publicfunctioncreateGradientBox(widthNumber,height:Number,rotation:Number=0,tx:Number=0,ty:Number=0):void语言版本:ActionScri

26、pt3.0运行时版本:AIR1.0,FlashPlayer9创建Graphics类的beginGradientFill()和lineGradientStyle()方法所需的矩阵的特定样式。宽度和高度被缩放为scaleX/scaleY对,而tx/ty值偏移了宽度和高度的一半。例如,假设渐变具有以下特性:GradientType.LINEAR绿色和蓝色这两种颜色(比例数组设置为0,255)SpreadMethod.PADInterpolationMethod.LINEAR_RGB下图显示了使用createGradientBox()方法以不同参数设置在其中定义矩阵的渐变:treateGradient

27、BoxQ设置生成的渐变width=25;height=25:rotation=0;tx=0:ty=0:width=25:height=25:rotation=0;tx=25:ty=0:IIwidth=50:height=50;rotation=0;tx=0:ty=0:width=50:height=50;rotation=Math.PI/4;/45degreestx=0:ty=0:参数width:Number一渐变框的宽度。height:Number一渐变框的高度。rotation:Number(default=0)一旋转量(以弧度为单位)。tx:Number(default二0)一沿x轴向右

28、平移的距离(以像素为单位)。此值将偏移width参数的一半。ty:Number(default二0)一沿y轴向下平移的距离(以像素为单位)。此值将偏移height参数的一半。另请参见flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()示例下面的示例通过调用myMatrix的createBox()方法来设置它的x缩放比例、缩放比例、旋转、x位置和y位置。packageimportflash.display.GradientType;importflash.display.Sprit

29、e;importflash.geom.Matrix;publicclassMatrix_createGradientBoxextendsSpritepublicfunctionMatrix_createGradientBox()varmyMatrix:Matrix=newMatrix();trace(myMatrix.toString();/(a=1,b=0,c=0,d=1,tx=0,ty=0)myMatrix.createGradientBox(200,200,0,50,50);trace(myMatrix.toString();/(a=0.1220703125,b=0,c=0,d=0.12

30、20703125,tx=150,ty=150)varcolors:Array=0 xFF0000,0 x0000FF;varalphas:Array=100,100;varratios:Array=0,0 xFF;this.graphics.beginGradientFill(GradientType.LINEAR,colors,alphas,ratios,myMatrix);this.graphics.drawRect(0,0,300,200);deltaTransformPoint()方法publicfunctiondeltaTransformPoint(point:Point):Poin

31、t语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9如果给定预转换坐标空间中的点,则此方法返回发生转换后该点的坐标。与使用transformPoint()方法应用的标准转换不同,deltaTransformPoint()方法的转换不考虑转换参数tx和ty。参数point:Point一想要获得其矩阵转换结果的点。返回Point由应用矩阵转换所产生的点。identity()方法publicfunctionidentity():void产品版本:Lite2.0运行时版本:AIR1.0,FlashPlayer9为每个矩阵属性设置一个值,该值将导致null转换。通

32、过应用恒等矩阵转换的对象将与原始对象完全相同。调用identity()方法后,生成的矩阵具有以下属性:a=l、b=0、c=0、d=l、tx=0和ty=0。在矩阵表示法中,恒等矩阵如下所示:100010001invert()方法publicfunctioninvert():void语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9执行原始矩阵的逆转换。您可以将一个逆矩阵应用于对象来撤消在应用原始矩阵时执行的转换。示例下面的示例创建一个halfScaleMatrix,方法是调用doubleScaleMatrix的invert()方法。然后它将显示这两个矩阵互

33、为逆矩阵(即两个矩阵互相撤消由另一个矩阵执行的所有转换操作),方法是通过创建originalAndlnverseMatrix,它等同于noScaleMatrix。packageimportflash.display.Shape;importflash.display.Sprite;importflash.geom.Matrix;importflash.geom.Transform;publicclassMatrix_invertextendsSpritepublicfunctionMatrix_invert()varrect0:Shape=createRectangle(20,80,0 xFF

34、0000);varrect1:Shape=createRectangle(20,80,0 x00FF00);varrect2:Shape=createRectangle(20,80,0 x0000FF);varrect3:Shape=createRectangle(20,80,0 x000000);vartrans0:Transform=newTransform(rect0);vartrans1:Transform=newTransform(rect1);vartrans2:Transform=newTransform(rect2);vartrans3:Transform=newTransfo

35、rm(rect3);vardoubleScaleMatrix:Matrix=newMatrix(2,0,0,2,0,0);trans0.matrix=doubleScaleMatrix;trace(doubleScaleMatrix.toString();/(a=2,b=0,c=0,d=2,tx=0,ty=0)varnoScaleMatrix:Matrix=newMatrix(1,0,0,1,0,0);trans1.matrix=noScaleMatrix;rect1.x=50;trace(noScaleMatrix.toString();/(a=1,b=0,c=0,d=1,tx=0,ty=0

36、)varhalfScaleMatrix:Matrix=doubleScaleMatrix.clone();halfScaleMatrix.invert();trans2.matrix=halfScaleMatrix;rect2.x=100;trace(halfScaleMatrix.toString();/(a=0.5,b=0,c=0,d=0.5,tx=0,ty=0)varoriginalAndInverseMatrix:Matrix=doubleScaleMatrix.clone();originalAndInverseMatrix.concat(halfScaleMatrix);trans

37、3.matrix=originalAndInverseMatrix;rect3.x=150;trace(originalAndInverseMatrix.toString();/(a=1,b=0,c=0,d=1,tx=0,ty=0)publicfunctioncreateRectangle(w:Number,h:Number,color:Number):Shapevarrect:Shape=newShape();rect.graphics.beginFill(color);rect.graphics.drawRect(0,0,w,h);addChild(rect);returnrect;rot

38、ate()方法publicfunctionrotate(angle:Number):void语言版本:ActionScript3.0运行时版本:AIR1.0,FlashPlayer9对Matrix对象应用旋转转换。rotate()方法将更改Matrix对象的a、b、c和d属性。在矩阵表示法中,当前矩阵与以下矩阵连接也产生同样的结果:cosCq)sin(q)0-sinCq)cos(q)001参数angle:Number一以弧度为单位的旋转角度。scale()方法publicfunctionscale(sx:Number,sy:Number):void运行时版本:AIR1.0,FlashPlaye

39、r9对矩阵应用缩放转换。x轴乘以sx,y轴乘以sy。scale()方法将更改Matrix对象的a和d属性。在矩阵表示法中,当前矩阵与以下矩阵连接也产生同样的结果:s*00Sy001参数sx:Number一用于沿x轴缩放对象的乘数。sy:Number一用于沿y轴缩放对象的乘数。toString()方法publicfunctiontoString():String语言版本:ActionScript3.0产品版本:Lite2.0运行时版本:AIR1.0,FlashPlayer9返回列出该Matrix对象属性的文本值。返回String一一个字符串,它包含Matrix对象的属性值:a、b、c、d、tx和ty。transformPoint()方法publicfunctiontransformPoint(point:Point):Point运行时版本:AIR1.0,FlashPlayer9返回将Matrix对象表示的几何转换应用于指定点所产生的结果。参数point:Point一想要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论