Uso de objetos Matrix

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

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 .