La clase
Matrix
represena una matriz de transformación que determina cómo asignar puntos entre espacios de coordenadas. Es posible realizar varias transformaciones gráficas en un objeto de visualización mediante la definición de las propiedades de un objeto Matrix y aplicar dicho objeto Matrix a la propiedad
matrix
de un objeto Transform. Por último, se puede aplicar dicho objeto Transform como la propiedad
transform
del objeto de visualización. Estas funciones de transformación son la traslación (cambio de posición
x
e
y
), giro, cambio de escala y sesgo.
Aunque se puede definir una matriz ajustando directamente las propiedades (
a
,
b
,
c
,
d
,
tx
,
ty
) de un objeto Matrix, resulta más fácil utilizar el método
createBox()
. Este método incluye parámetros que permiten definir directamente los efectos de ajuste de escala, rotación y traslación del objeto Matrix resultante. Por ejemplo, el código siguiente crea un objeto Matrix que ajusta la escala de un objeto con un factor de 2 horizontalmente y 3 verticalmente, lo gira 45 grados y lo mueve (es decir, lo traslada) 10 píxeles a la derecha y 20 píxeles hacia abajo:
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);
También se pueden ajustar los efectos de escala, rotación y traslación de un objeto Matrix con los métodos
scale()
,
rotate()
y
translate()
. Estos métodos se combinan con los valores del objeto Matrix existente. Por ejemplo, en el código siguiente se establece un objeto Matrix que ajusta la escala de un objeto con un factor de 4 y lo gira 60 grados, ya que los métodos
scale()
y
rotate()
se llaman dos veces.
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;
Para aplicar una transformación de sesgo a un objeto Matrix, debe ajustarse su propiedad
b
o
c.
Al ajustar la propiedad
b
, se sesga la matriz verticalmente y al ajustar la propiedad
c
, se sesga la matriz horizontalmente. En el código siguiente, se sesga el objeto Matrix
myMatrix
verticalmente con un factor de 2:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Se puede aplicar una transformación de objeto Matrix a la propiedad
transform
de un objeto de visualización. Por ejemplo, el código siguiente aplica una transformación de matriz a un objeto de visualización denominado
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;
La primera línea define un objeto Matrix en la matriz de transformación existente que utiliza el objeto de visualización
myDisplayObject
(la propiedad
matrix
de la propiedad
transformation
del objeto de visualización
myDisplayObject
). De este modo, los métodos de la clase Matrix que se llamen tendrán un efecto acumulativo sobre la posición, la escala y la rotación del objeto de visualización.
Nota:
la clase ColorTransform también está incluida en el paquete flash.geometry. Esta clase se utiliza para establecer la propiedad
colorTransform
de un objeto Transform. Puesto que no aplica ningún tipo de transformación geométrica, no se describe aquí detalladamente. Para obtener más información, consulte la clase
ColorTransform
en
Referencia de ActionScript 3.0 para la plataforma de Adobe Flash
.