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
.