flash.geom
public class Transform
继承Transform Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

利用 Transform 类,可以访问可应用于显示对象的颜色调整属性和二维或三维转换对象。在转换过程中,会将显示对象的颜色或方向和位置从当前值或坐标调整(偏移)到新值或坐标。Transform 类还收集有关应用于显示对象及其所有父对象的颜色和二维矩阵转换的数据。可以通过 concatenatedColorTransformconcatenatedMatrix 属性访问这些组合转换。

若要应用颜色转换,请执行下列操作:创建一个 ColorTransform 对象,并使用该对象的方法和属性设置颜色调整,然后将显示对象的 transform 属性的 colorTransformation 属性分配给新的 ColorTransformation 对象。

若要应用二维转换,请执行下列操作:创建一个 Matrix 对象,并设置该矩阵的二维转换,然后将显示对象的 transform.matrix 属性分配给新的 Matrix 对象。

若要应用三维转换,应首先创建一个三维显示对象。三维显示对象具有一个非零的 z 属性值。您无需创建 Matrix3D 对象。对于所有三维对象,当您为显示对象分配 z 值时,将自动创建 Matrix3D 对象。可以通过显示对象的 transform 属性访问显示对象的 Matrix3D 对象。使用 Matrix3D 类的方法,可以添加或修改现有转换设置。还可以创建自定义 Matrix3D 对象,并设置该对象的转换元素,然后使用 transform.matrix 属性将新的 Matrix3D 对象分配给显示对象。

若要修改舞台或 root 对象的透视投影,请执行下列操作:使用 root 显示对象的 transform.matrix 属性以访问 PerspectiveProjection 对象。或者,通过设置显示对象的父级的透视投影属性,对显示对象应用不同的透视投影属性。子显示对象会继承新属性。具体而言,创建一个 PerspectiveProjection 对象并设置其属性,然后将此 PerspectiveProjection 对象分配给父显示对象的 transform 属性的 perspectiveProjection 属性。然后,指定的投影转换将应用于显示对象的所有三维子级。

由于 PerspectiveProjection 对象和 Matrix3D 对象都会执行透视转换,因此不要将二者同时分配给显示对象。将 PerspectiveProjection 对象用于焦距和投影中心更改。若要获取对透视转换的更多控制,请创建透视投影 Matrix3D 对象。

查看示例

另请参见

flash.display.DisplayObject.transform
flash.geom.ColorTransform
flash.geom.Matrix
flash.geom.Matrix3D
flash.geom.PerspectiveProjection


公共属性
 属性定义方
  colorTransform : ColorTransform
一个 ColorTransform 对象,其中包含整体调整显示对象颜色的值。
Transform
  concatenatedColorTransform : ColorTransform
[只读 (read-only)] 一个 ColorTransform 对象,表示应用于此显示对象及其所有父级对象的组合颜色转换,回到根级别。
Transform
  concatenatedMatrix : Matrix
[只读 (read-only)] 一个 Matrix 对象,表示此显示对象及其所有父级对象的组合转换矩阵,回到根级别。
Transform
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  matrix : Matrix
一个 Matrix 对象,其中包含更改显示对象的缩放、旋转和平移的值。
Transform
  matrix3D : Matrix3D
提供对三维显示对象的 Matrix3D 对象的访问。
Transform
  perspectiveProjection : PerspectiveProjection
提供对三维显示对象的 PerspectiveProjection 对象的访问。
Transform
  pixelBounds : Rectangle
[只读 (read-only)] 一个 Rectangle 对象,它定义舞台上的显示对象的边界矩形。
Transform
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
返回一个 Matrix3D 对象,该对象可以相对于当前显示对象的空间转换指定显示对象的空间。
Transform
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
colorTransform属性
colorTransform:ColorTransform  [读写]

运行时版本: AIR 1.0 Flash Player 9

一个 ColorTransform 对象,其中包含整体调整显示对象颜色的值。



实现
    public function get colorTransform():ColorTransform
    public function set colorTransform(value:ColorTransform):void

引发
TypeError — 设置时 colorTransform 为 null

另请参见

concatenatedColorTransform属性 
concatenatedColorTransform:ColorTransform  [只读 (read-only)]

运行时版本: AIR 1.0 Flash Player 9

一个 ColorTransform 对象,表示应用于此显示对象及其所有父级对象的组合颜色转换,回到根级别。如果在不同级别上应用了不同的颜色转换,则将其中所有转换连接成此属性的一个 ColorTransform 对象。



实现
    public function get concatenatedColorTransform():ColorTransform

另请参见

concatenatedMatrix属性 
concatenatedMatrix:Matrix  [只读 (read-only)]

运行时版本: AIR 1.0 Flash Player 9

一个 Matrix 对象,表示此显示对象及其所有父级对象的组合转换矩阵,回到根级别。如果在不同级别上应用了不同的转换矩阵,则将其中所有矩阵连接成此属性的一个矩阵。此外,对于浏览器中运行的可调整大小的 SWF 内容,此属性将因调整窗口大小而造成的舞台坐标与窗口坐标之差视为重要因素。因此,该属性将局部坐标转换为窗口坐标,后者可能与舞台的坐标空间不同。



实现
    public function get concatenatedMatrix():Matrix
matrix属性 
matrix:Matrix  [读写]

运行时版本: AIR 1.0 Flash Player 9

一个 Matrix 对象,其中包含更改显示对象的缩放、旋转和平移的值。

如果将 matrix 属性设置为某个值(非 null),则 matrix3D 属性为 null。如果将 matrix3D 属性设置为某个值(非 null),则 matrix 属性为 null



实现
    public function get matrix():Matrix
    public function set matrix(value:Matrix):void

引发
TypeError — 设置时矩阵为 null

另请参见

matrix3D属性 
matrix3D:Matrix3D  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

提供对三维显示对象的 Matrix3D 对象的访问。Matrix3D 对象表示一个转换矩阵,它确定显示对象的位置和方向。Matrix3D 对象还可以执行透视投影。

如果将 matrix 属性设置为某个值(非 null),则 matrix3D 属性为 null。如果将 matrix3D 属性设置为某个值(非 null),则 matrix 属性为 null



实现
    public function get matrix3D():Matrix3D
    public function set matrix3D(value:Matrix3D):void

另请参见

perspectiveProjection属性 
perspectiveProjection:PerspectiveProjection  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

提供对三维显示对象的 PerspectiveProjection 对象的访问。可以使用 PerspectiveProjection 对象修改舞台的透视转换,也可以将透视转换分配给显示对象的所有三维子级。

基于视野和舞台的高宽比(尺寸),将默认的 PerspectiveProjection 对象分配给 root 对象。



实现
    public function get perspectiveProjection():PerspectiveProjection
    public function set perspectiveProjection(value:PerspectiveProjection):void

另请参见

pixelBounds属性 
pixelBounds:Rectangle  [只读 (read-only)]

运行时版本: AIR 1.0 Flash Player 9

一个 Rectangle 对象,它定义舞台上的显示对象的边界矩形。



实现
    public function get pixelBounds():Rectangle
方法详细信息
getRelativeMatrix3D()方法
public function getRelativeMatrix3D(relativeTo:DisplayObject):Matrix3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

返回一个 Matrix3D 对象,该对象可以相对于当前显示对象的空间转换指定显示对象的空间。可以使用 getRelativeMatrix3D() 方法,将一个三维显示对象相对于另一个三维显示对象移动。

参数

relativeTo:DisplayObject — 相对于其发生转换的显示对象。若要获取相对于舞台的 Matrix3D 对象,请将该参数设置为 rootstage 对象。若要获取显示对象的相对于现实世界的矩阵,请将该参数设置为一个已应用透视转换的显示对象。

返回
Matrix3D — 一个 Matrix3D 对象,该对象可用于将 relativeTo 显示对象的空间转换为当前显示对象的空间。

另请参见

示例 如何使用示例
TransformExample.as

下面的示例使用 TransformExample 类来倾斜以渐变图案填充的正方形 Sprite 的底边。每次用户单击正方形时,应用程序都将通过以下步骤来倾斜正方形,从而转换 Sprite:
  1. TransformExample() 构造函数创建一个新的 sprite 对象 target
  2. TransformExample() 构造函数调用 draw() 方法,该方法在 sprite 中绘制一个渐变正方形。
  3. TransformExample() 构造函数为 sprite 添加 click 事件侦听器,该侦听器由 clickHandler() 方法处理。
  4. clickHandler() 方法创建一个新的 Matrix 对象 skewMatrix,该对象被设置为应用倾斜效果。将另一个矩阵 tempMatrix 分配给 Sprite 的当前转换矩阵,然后使用 concat() 方法将它与 skewMatrix 合并。将此矩阵分配给正方形 Sprite 的 transform.matrix 属性。每次用户单击正方形时,对 clickHandler() 的调用都将通过倾斜正方形来修改其形状。
  5. 此外,clickHandler() 方法创建一个新的 ColorTransform 对象。新 ColorTransform 的 redOffset 属性设置为 redOffset 的当前值并且每次增加 25。同样,blueOffset 属性每次减少 25。每次单击时,Sprite 的颜色都会改变。
package {
    import flash.display.Sprite;
    import flash.display.GradientType;
    import flash.geom.Matrix;
    import flash.geom.ColorTransform;
    import flash.events.MouseEvent;

    public class TransformExample extends Sprite {
        public function TransformExample() { 
            var target:Sprite = new Sprite();
            draw(target);
            addChild(target);
            target.useHandCursor = true;
            target.buttonMode = true;
            target.addEventListener(MouseEvent.CLICK, clickHandler)
        }
        public function draw(sprite:Sprite):void {
            var red:uint = 0xFF0000;
            var green:uint = 0x00FF00;
            var blue:uint = 0x0000FF;
            var size:Number = 100;
            sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]);
            sprite.graphics.drawRect(0, 0, 100, 100);
        }
        public function clickHandler(event:MouseEvent):void {
            var skewMatrix:Matrix = new Matrix();
            skewMatrix.c = 0.25;
            var tempMatrix:Matrix = this.transform.matrix;
            tempMatrix.concat(skewMatrix);
            this.transform.matrix = tempMatrix;
            
            var rOffset:Number = this.transform.colorTransform.redOffset + 25;
            var bOffset:Number = this.transform.colorTransform.blueOffset - 25;
            this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0);            
        }
    }
}