- 小教板
-
利用 Transform 类,可以访问可应用于显示对象的颜色调整属性和二维或三维转换对象。在转换过程中,会将显示对象的颜色或方向和位置从当前值或坐标调整(偏移)到新值或坐标。Transform 类还收集有关应用于显示对象及其所有父对象的颜色和二维矩阵转换的数据。可以通过 concatenatedColorTransform 和 concatenatedMatrix 属性访问这些组合转换。
要应用颜色转换,请执行下列操作:创建一个 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 对象。
- 马老四
-
displayObject 显示对象的一个共有属性
transform 属性
transform:Transform [read-write]
语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。 在 Transform 类的条目中对特定属性 matrix、colorTransform 和三个只读属性(concatenatedMatrix、concatenatedColorTransform 和 pixelBounds)进行了说明。
transform 对象的每个属性本身都是一个对象。 此概念很重要,因为设置 matrix 或 colorTransform 对象的新值的唯一方法是,创建新对象并将该对象复制到 transform.matrix 或 transform.colorTransform 属性。
例如,要增加显示对象矩阵的 tx 值,您必须制作整个矩阵对象的副本,然后将新对象复制到 transform 对象的 matrix 属性中:
var myMatrix:Object = myDisplayObject.transform.matrix; myMatrix.tx += 10; myDisplayObject.transform.matrix = myMatrix; 不能直接设置 tx 属性。 下面的代码对 myDisplayObject 不起作用:
myDisplayObject.transform.matrix.tx += 10; 您也可以复制整个 transform 对象并为其赋予另一个显示对象的 transform 属性。 例如,下面的代码将整个 transform 对象从 myOldDisplayObj 复制到 myNewDisplayObj:
myNewDisplayObj.transform = myOldDisplayObj.transform;
现在,新显示对象 myNewDisplayObj 与旧显示对象 myOldDisplayObj 具有相同的矩阵、颜色转换和像素范围值。
实现
public function get transform():Transform
public function set transform(value:Transform):void
另请参见
Transform class
使用 Matrix 对象
示例
如何使用示例
以下代码设置一个 square Sprite 对象。 当用户单击 Sprite 时,transformer() 方法会调整 Sprite transform 属性的 colorTransform 和 matrix 属性:
import flash.display.Sprite;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Transform;
import flash.events.MouseEvent;
var square:Sprite = new Sprite();
square.graphics.lineStyle(20, 0xFF2200);
square.graphics.beginFill(0x0000DD);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);
var resultColorTransform:ColorTransform = new ColorTransform();
resultColorTransform.alphaMultiplier = 0.5;
resultColorTransform.redOffset = 155;
resultColorTransform.greenMultiplier = 0.5;
var skewMatrix:Matrix = new Matrix(1, 1, 0, 1);
square.addEventListener(MouseEvent.CLICK, transformer);
function transformer(event:MouseEvent):void {
var transformation:Transform = square.transform;
var tempMatrix:Matrix = square.transform.matrix;
tempMatrix.concat(skewMatrix);
square.transform.colorTransform = resultColorTransform;
square.transform.matrix = tempMatrix;
}