Matrix
클래스는 특정 좌표 공간의 점을 다른 좌표 공간에 매핑하는 방법을 결정하는 변형 행렬을 나타냅니다. Matrix 객체의 속성을 설정하여 Matrix 객체를 Transform 객체의
matrix
속성에 적용한 다음, 이 Transform 객체를 표시 객체의
transform
속성으로 적용하면 표시 객체에서 다양한 그래픽 변환 작업을 수행할 수 있습니다. 이러한 변환 기능에는 평행 이동(
x
와
y
위치 변경), 회전, 크기 조절, 기울이기 등이 있습니다.
Matrix 객체의 속성(
a
,
b
,
c
,
d
,
tx
,
ty
)을 직접 조정하여 행렬을 정의할 수도 있지만
createBox()
메서드를 사용하면 더 쉽습니다. 이 메서드에는 결과 행렬의 크기 조절, 회전 및 평행 이동 효과를 직접 정의할 수 있는 매개 변수가 포함되어 있습니다. 예를 들어 다음 코드를 사용하면 가로 방향으로 2.0배 크기 조절, 세로 방향으로 3.0배 크기 조절, 45° 각도로 회전, 오른쪽으로 10픽셀 이동 및 아래쪽으로 20픽셀 이동하는 Matrix 객체가 만들어집니다.
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);
scale()
,
rotate()
및
translate()
메서드를 사용하여 Matrix 객체의 크기 조절, 회전 및 평행 이동 효과를 조정할 수도 있습니다. 이러한 메서드는 기존 Matrix 객체의 값을 결합합니다. 예를 들어 다음 코드에서는
scale()
메서드와
rotate()
메서드가 두 번 호출되므로 Matrix 객체가 4배로 확대되고 60° 회전합니다.
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;
Matrix 객체에 기울이기 변환을 적용하려면
b
또는
c
속성을 조정해야 합니다.
b
속성을 조정하면 행렬이 세로 방향으로 기울어지고
c
속성을 조정하면 행렬이 가로 방향으로 기울어집니다. 다음 코드에서는
myMatrix
라는 Matrix 객체를 세로 방향, 2의 배율로 기울입니다.
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
표시 객체의
transform
속성에 Matrix 변환을 적용할 수 있습니다. 예를 들어 다음 코드에서는
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;
첫 번째 행에서는 Matrix 객체를
myDisplayObject
표시 객체에서 사용하는 기존 변형 행렬로 설정합니다(
myDisplayObject
표시 객체에 대한
transformation
속성의
matrix
속성). 따라서 사용자가 호출하는 Matrix 클래스 메서드에는 표시 객체의 기존 위치, 크기 조절 및 회전 효과가 누적 적용됩니다.