使用 Matrix 对象Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 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 类方法对显示对象的现有位置、缩放和旋转会产生累积效果。 注: ColorTransform 类还包含在 flash.geometry 包中。该类用于设置 Transform 对象的 colorTransform 属性。因为它不应用任何几何转换,所以在此处不做详细讨论。有关详细信息,请参阅用于 Adobe Flash Platform 的 ActionScript 3.0 参考中的 ColorTransform 类。
|
|