Uso de objetos Matrix

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

A classe Matrix representa uma matriz de transformação que determina como o map aponta de um espaço de coordenada para outro. É possível realizar várias transformações gráficas em um objeto de exibição definindo as propriedades de um objeto Matrix, aplicando esse objeto Matrix à propriedade matrix de um objeto Transform, e depois aplicando esse objeto Transform como a propriedade transform do objeto de exibição. Essas funções de transformação incluem conversão (reposicionamento de x e y ), rotação, dimensionamento e inclinação.

Embora seja possível definir uma matriz ajustando diretamente as propriedades ( a , b , c , d , tx , ty ) de um objeto Matrix, é mais fácil usar o método createBox() . Esse método inclui parâmetros que permitem definir diretamente os efeitos de dimensionamento, rotação e transposição da matriz resultante. Por exemplo, o código a seguir cria um objeto Matrix que dimensionα um objeto horizontalmente em 2,0, verticalmente em 3,0, gira-o em 45°, movendo-o (transpondo) 10 pixels para a direita e 20 pixels para baixo:

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);

Também é possível ajustar os efeitos de dimensionamento, rotação e transposição de um objeto Matrix usando os métodos scale() , rotate() e translate() . Observe que esses métodos combinam com os valores do objeto Matrix existente. Por exemplo, o código a seguir define um objeto Matrix que dimensiona um objeto por um fator de 4 e gira-o 60°, desde que os métodos scale() e rotate() sejam chamados duas vezes:

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 uma transformação de inclinação em um objeto Matrix, ajuste sua propriedade b ou c . O ajuste da propriedade b inclina a matriz verticalmente e o ajuste da propriedade c inclina a matriz horizontalmente. O código a seguir inclina o objeto Matrix myMatrix verticalmente por um fator de 2:

var skewMatrix:Matrix = new Matrix(); 
skewMatrix.b = Math.tan(2); 
myMatrix.concat(skewMatrix);

Você pode aplicar uma transformação de Matrix à propriedade transform de um objeto de exibição. Por exemplo, o código a seguir aplica uma transformação de matriz em um objeto de exibição chamado 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;

A primeira linha define um objeto Matrix como a matriz de transformação existente usada pelo objeto de exibição myDisplayObject (a propriedade matrix da propriedade transformation do objeto de exibição myDisplayObject ). Dessa forma, os métodos da classe Matrix que você chama terão um efeito cumulativo na posição, dimensão e rotação existentes do objeto de exibição.

Nota: A classe ColorTransform também está incluída no pacote flash.geometry. Essa classe é usada para definir a propriedade colorTransform de um objeto Transform. Como não se aplica a nenhumα transformação geométrica, ela não será discutida em detalhes aqui. Para obter mais informações, consulte a classe ColorTransform em Referência do ActionScript® 3.0 para Adobe® Flash® Platform .