window.runtime 属性window.runtime.flash.geom.Matrix
继承Matrix Inheritance Object

Matrix 类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间。您可以对一个显示对象执行不同的图形转换,方法是设置 Matrix 对象的属性,将该 Matrix 对象应用于 Transform 对象的 matrix 属性,然后应用该 Transform 对象作为显示对象的 transform 属性。这些转换函数包括平移(xy 重新定位)、旋转、缩放和倾斜。

这些转换类型统称为仿射转换。仿射转换在转换时保持线条笔直,因此平行线保持平行。

若要对显示对象应用转换矩阵,请创建一个 Transform 对象,将其 matrix 属性设置为转换矩阵,然后将显示对象的 transform 属性设置为 Transform 对象。Matrix 对象也被用作某些方法的参数,例如以下方法:

转换矩阵对象为具有如下内容的 3 x 3 的矩阵:

以矩阵表示法表示的 Matrix 类属性

在传统的转换矩阵中,uvw 属性具有其它功能。Matrix 类只能在二维空间中操作,因此始终假定属性值 uv 为 0.0,属性值 w 为 1.0。矩阵的有效值如下:

以矩阵表示法表示的 Matrix 类属性显示 u、v 和 w 的假设值

您可以获取和设置 Matrix 对象的全部六个其它属性的值:abcdtxty

Matrix 类支持四种主要类型的转换:平移、缩放、旋转和倾斜。您可以使用特定的方法来设置这些转换的其中三个,如下表中所述:

转换方法矩阵值显示结果说明
平移(置换) translate(tx, ty) translate 方法参数的矩阵表示法 translate 方法效果的图示 将图像 tx 像素向右移动,将 ty 像素向下移动。
缩放 scale(sx, sy) scale 方法参数的矩阵表示法 scale 方法效果的图示 将每个像素的位置乘以 x 轴的 sxy 轴的 sy,从而调整图像的大小。
旋转 rotate(q) rotate 方法属性的矩阵表示法 rotate 方法效果的图示 将图像旋转一个以弧度为单位的角度 q
倾斜或剪切 无;必须设置属性 bc skew 函数属性的矩阵表示法 skew 函数效果的图示 以平行于 x 轴或 y 轴的方向逐渐滑动图像。Matrix 对象的 b 属性表示斜角沿 y 轴的正切;Matrix 对象的 c 属性表示斜角沿 x 轴的正切。

每个转换函数都将更改当前矩阵的属性,所以您可以有效地合并多个转换。为此,请先调用多个转换函数,再将矩阵应用于其显示对象目标(通过使用该显示对象的 transform 属性)。

使用 new Matrix() 构造函数创建 Matrix 对象后,才能调用 Matrix 对象的方法。

另请参见

BitmapData.draw()


属性
 属性定义方
  a : Number
缩放或旋转图像时影响像素沿 x 轴定位的值。
Matrix
  b : Number
旋转或倾斜图像时影响像素沿 y 轴定位的值。
Matrix
  c : Number
旋转或倾斜图像时影响像素沿 x 轴定位的值。
Matrix
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  d : Number
缩放或旋转图像时影响像素沿 y 轴定位的值。
Matrix
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  tx : Number
沿 x 轴平移每个点的距离。
Matrix
  ty : Number
沿 y 轴平移每个点的距离。
Matrix
公共方法
 方法定义方
  
Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
使用指定参数创建新的 Matrix 对象。
Matrix
  
返回一个新的 Matrix 对象,它是此矩阵的克隆,带有与所含对象完全相同的副本。
Matrix
  
将某个矩阵与当前矩阵连接,从而将这两个矩阵的几何效果有效地结合在一起。
Matrix
  
createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
包括用于缩放、旋转和转换的参数。
Matrix
  
createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
创建 Graphics 类的 beginGradientFill() 和 lineGradientStyle() 方法所需的矩阵的特定样式。
Matrix
  
如果给定预转换坐标空间中的点,则此方法返回发生转换后该点的坐标。
Matrix
 Inherited
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。
Object
  
为每个矩阵属性设置一个值,该值将导致 null 转换。
Matrix
  
执行原始矩阵的逆转换。
Matrix
 Inherited
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。
Object
  
rotate(angle:Number):void
对 Matrix 对象应用旋转转换。
Matrix
  
scale(sx:Number, sy:Number):void
对矩阵应用缩放转换。
Matrix
 Inherited
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。
Object
  
toString():String
返回列出该 Matrix 对象属性的文本值。
Matrix
  
返回将 Matrix 对象表示的几何转换应用于指定点所产生的结果。
Matrix
  
translate(dx:Number, dy:Number):void
沿 x 和 y 轴平移矩阵,由 dx 和 dy 参数指定。
Matrix
 Inherited
valueOf():Object
返回指定对象的原始值。
Object
属性详细信息
a属性
var a:Number

缩放或旋转图像时影响像素沿 x 轴定位的值。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 a 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.a);  // 1

myMatrix.a = 2;
air.trace(myMatrix.a);  // 2
b属性 
var b:Number

旋转或倾斜图像时影响像素沿 y 轴定位的值。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 b 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.b);  // 0

var degrees = 30;
var radians = (degrees/180) * Math.PI;
myMatrix.b = Math.tan(radians);
air.trace(myMatrix.b);  // 0.5773502691896257
c属性 
var c:Number

旋转或倾斜图像时影响像素沿 x 轴定位的值。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 c 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.c);  // 0

var degrees = 30;
var radians = (degrees/180) * Math.PI;
myMatrix.c = Math.tan(radians);
air.trace(myMatrix.c);  // 0.5773502691896257
d属性 
var d:Number

缩放或旋转图像时影响像素沿 y 轴定位的值。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 d 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.d);  // 1

myMatrix.d = 2;
air.trace(myMatrix.d);  // 2
tx属性 
var tx:Number

沿 x 轴平移每个点的距离。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 tx 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.tx);  // 0

myMatrix.tx = 50;  // 50
air.trace(myMatrix.tx);
ty属性 
var ty:Number

沿 y 轴平移每个点的距离。


示例
下面的示例将创建 Matrix 对象 myMatrix 并设置它的 ty 值。
var myMatrix = new air.Matrix();
air.trace(myMatrix.ty);  // 0

myMatrix.ty = 50;
air.trace(myMatrix.ty);  // 50
构造函数详细信息
Matrix()构造函数
function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)

使用指定参数创建新的 Matrix 对象。在矩阵表示法中,按如下方式组织属性:

以矩阵表示法表示的 Matrix 类属性显示 u、v 和 w 的假设值

如果不向 new Matrix() 构造函数提供任何参数,它将创建一个具有以下值的恒等矩阵

a = 1b = 0c = 0d = 1tx = 0ty = 0

在矩阵表示法中,恒等矩阵如下所示:

以矩阵表示法表示的 Matrix 类属性

参数
a:Number (default = 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 将生成一个具有值 a=1、b=0、c=0、d=1、tx=0、ty=0 的恒等矩阵。
var matrix_1 = new air.Matrix();
air.trace(matrix_1);  // (a=1, b=0, c=0, d=1, tx=0, ty=0)

var matrix_2 = new air.Matrix(1, 2, 3, 4, 5, 6);
air.trace(matrix_2);  // (a=1, b=2, c=3, d=4, tx=5, ty=6)
方法详细信息
clone()方法
function clone():Matrix

返回一个新的 Matrix 对象,它是此矩阵的克隆,带有与所含对象完全相同的副本。

返回
Matrix — 一个 Matrix 对象。
concat()方法 
function concat(m:Matrix):void

将某个矩阵与当前矩阵连接,从而将这两个矩阵的几何效果有效地结合在一起。在数学术语中,将两个矩阵连接起来与使用矩阵乘法将它们结合起来是相同的。

例如,如果矩阵 m1 使用系数 4 缩放某个对象,而矩阵 m2 使用 1.5707963267949 弧度 (Math.PI/2) 旋转该对象,则 m1.concat(m2) 会将 m1 转换为一个使用系数 4 缩放对象并使用 Math.PI/2 弧度旋转该对象的矩阵。

此方法将源矩阵替换为连接矩阵。如果要在不更改两个源矩阵中的任何一个的情况下连接这两个矩阵,则可以通过使用 clone() 方法首先复制源矩阵,如“类示例”部分中所示。

参数

m:Matrix — 要连接到源矩阵的矩阵。

createBox()方法 
function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

包括用于缩放、旋转和转换的参数。当应用于矩阵时,该方法会基于这些参数设置矩阵的值。

通过使用 createBox() 方法,您可以获得与依次应用 identity()rotate()scale()translate() 方法时得到的矩阵相同的矩阵。例如,mat1.createBox(2, 2,Math.PI/4, 100, 100) 具有与如下所示代码相同的效果:

     import flash.geom.Matrix;
          var mat1:Matrix = new Matrix();
     mat1.identity();
     mat1.rotate(Math.PI/4);
     mat1.scale(2, 2);
     mat1.translate(10, 20);
     
     var mat1 = new air.Matrix();
     mat1.identity();
     mat1.rotate(Math.PI/4);
     mat1.scale(2, 2);
     mat1.translate(10, 20);
     

参数

scaleX:Number — 水平缩放所用的系数。
 
scaleY:Number — 垂直缩放所用的系数。
 
rotation:Number (default = 0) — 旋转量(以弧度为单位)。
 
tx:Number (default = 0) — 沿 x 轴向右平移(移动)的像素数。
 
ty:Number (default = 0) — 沿 y 轴向下平移(移动)的像素数。

另请参见

createGradientBox()方法 
function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

创建 Graphics 类的 beginGradientFill()lineGradientStyle() 方法所需的矩阵的特定样式。宽度和高度被缩放为 scaleX/scaleY 对,而 tx/ty 值偏移了宽度和高度的一半。

例如,假设渐变具有以下特性:

下图显示了使用 createGradientBox() 方法以不同参数设置在其中定义矩阵的渐变:

createGradientBox() 设置生成的渐变
width = 25;
     height = 25; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
生成的线性渐变
width = 25; 
     height = 25; 
     rotation = 0; 
     tx = 25; 
     ty = 0;
生成的线性渐变
width = 50; 
     height = 50; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
生成的线性渐变
width = 50;
     height = 50; 
     rotation = Math.PI / 4; // 45°
     tx = 0; 
     ty = 0;
生成的线性渐变

参数

width:Number — 渐变框的宽度。
 
height:Number — 渐变框的高度。
 
rotation:Number (default = 0) — 旋转量(以弧度为单位)。
 
tx:Number (default = 0) — 沿 x 轴向右平移的距离(以像素为单位)。此值将偏移 width 参数的一半。
 
ty:Number (default = 0) — 沿 y 轴向下平移的距离(以像素为单位)。此值将偏移 height 参数的一半。

另请参见

deltaTransformPoint()方法 
function deltaTransformPoint(point:Point):Point

如果给定预转换坐标空间中的点,则此方法返回发生转换后该点的坐标。与使用 transformPoint() 方法应用的标准转换不同,deltaTransformPoint() 方法的转换不考虑转换参数 txty

参数

point:Point — 想要获得其矩阵转换结果的点。

返回
Point — 由应用矩阵转换所产生的点。
identity()方法 
function identity():void

为每个矩阵属性设置一个值,该值将导致 null 转换。通过应用恒等矩阵转换的对象将与原始对象完全相同。

调用 identity() 方法后,生成的矩阵具有以下属性:a=1、b=0、c=0、d=1、tx=0 和 ty=0。

在矩阵表示法中,恒等矩阵如下所示:

以矩阵表示法表示的 Matrix 类属性

invert()方法 
function invert():void

执行原始矩阵的逆转换。您可以将一个逆矩阵应用于对象来撤消在应用原始矩阵时执行的转换。

rotate()方法 
function rotate(angle:Number):void

对 Matrix 对象应用旋转转换。

rotate() 方法将更改 Matrix 对象的 abcd 属性。在矩阵表示法中,当前矩阵与以下矩阵连接也产生同样的结果:

scale 方法参数的矩阵表示法

参数

angle:Number — 以弧度为单位的旋转角度。

另请参见

scale()方法 
function scale(sx:Number, sy:Number):void

对矩阵应用缩放转换。x 轴乘以 sxy 轴乘以 sy

scale() 方法将更改 Matrix 对象的 ad 属性。在矩阵表示法中,当前矩阵与以下矩阵连接也产生同样的结果:

scale 方法参数的矩阵表示法

参数

sx:Number — 用于沿 x 轴缩放对象的乘数。
 
sy:Number — 用于沿 y 轴缩放对象的乘数。

另请参见

toString()方法 
function toString():String

返回列出该 Matrix 对象属性的文本值。

返回
String — 一个字符串,它包含 Matrix 对象的属性值:abcdtxty
transformPoint()方法 
function transformPoint(point:Point):Point

返回将 Matrix 对象表示的几何转换应用于指定点所产生的结果。

参数

point:Point — 想要获得其矩阵转换结果的点。

返回
Point — 由应用矩阵转换所产生的点。
translate()方法 
function translate(dx:Number, dy:Number):void

沿 xy 轴平移矩阵,由 dxdy 参数指定。

参数

dx:Number — 沿 x 轴向右移动的量(以像素为单位)。
 
dy:Number — 沿 y 轴向下移动的量(以像素为单位)。

另请参见