Matrix
类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间。您可以对一个显示对象执行不同的图形转换,方法是设置 Matrix 对象的属性,将该 Matrix 对象应用于 Transform 对象的
matrix
属性,然后应用该 Transform 对象作为显示对象的
transform
属性。 这些转换函数包括平移(
x
和
y
重新定位)、旋转、缩放和倾斜。
虽然可以通过直接调整 Matrix 对象的属性(
a
、
b
、
c
、
d
、
tx
和
ty
)来定义矩阵,但更简单的方法是使用
createBox()
方法。使用此方法提供的参数可以直接定义生成的矩阵的缩放、旋转和平移效果。例如,以下代码创建一个 Matrix 对象,该对象可将某个对象水平缩放 2.0、垂直缩放 3.0、旋转 45°、向右移动(转换)10 像素并向下移动 20 像素:
var matrix:Matrix = new Matrix();
var scaleX:Number = 2.0;
var scaleY:Number = 3.0;
var rotation:Number = 2 * Math.PI * (45 / 360);
var tx:Number = 10;
var ty:Number = 20;
matrix.createBox(scaleX, scaleY, rotation, tx, ty);
还可以使用
scale()
、
rotate()
和
translate()
方法调整 Matrix 对象的缩放、旋转和平移效果。请注意,这些方法合并了现有 Matrix 对象的值。例如,以下代码设置一个 Matrix 对象,该对象可将某个对象按缩放系数 4 进行缩放并旋转 60°,因为
scale()
和
rotate()
方法会调用两次:
var matrix:Matrix = new Matrix();
var rotation:Number = 2 * Math.PI * (30 / 360); // 30°
var scaleFactor:Number = 2;
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
matrix.scale(scaleX, scaleY);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
要将倾斜转换应用到 Matrix 对象,请调整该对象的
b
或
c
属性。调整
b
属性将矩阵垂直倾斜,并调整
c
属性将矩阵水平倾斜。以下代码使用系数 2 垂直倾斜
myMatrix
Matrix 对象:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
可以将矩阵转换应用到显示对象的
transform
属性。例如,以下代码将矩阵转换应用于名为
myDisplayObject
的显示对象:
var matrix:Matrix = myDisplayObject.transform.matrix;
var scaleFactor:Number = 2;
var rotation:Number = 2 * Math.PI * (60 / 360); // 60°
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
第一行将 Matrix 对象设置为
myDisplayObject
显示对象所使用的现有转换矩阵(
myDisplayObject
显示对象的
transformation
属性的
matrix
属性)。这样,调用的 Matrix 类方法对显示对象的现有位置、缩放和旋转会产生累积效果。