예제: 표시 객체에 행렬 변환 적용

DisplayObjectTransformer 샘플 응용 프로그램에서는 다음과 같이 Matrix 클래스를 사용하여 표시 객체를 변환하는 다양한 기능을 보여 줍니다.

이 응용 프로그램에는 다음과 같이 행렬 변환 매개 변수를 조정할 수 있는 인터페이스가 있습니다.


컨트롤이 세로로 배열된 응용 프로그램 사용자 인터페이스를 보여 주는 스크린샷. 이 인터페이스에는 다섯 개의 슬라이더([Scale X], [Scale Y], [Move X], [Move Y], [Rotate])와 라디오 버튼([Skew Mode]), 슬라이더([Skew angle])가 차례로 나옵니다.

사용자가 [Transform] 버튼을 클릭하면 응용 프로그램에서 적절한 변환을 적용합니다.


바나나 사진의 원본 보기와 -45 회전 및 50% 축소 효과가 적용된 보기

원본 표시 객체와 -45˚ 회전 및 50% 축소 효과가 적용된 표시 객체


이 샘플에 대한 응용 프로그램 파일을 구하려면 www.adobe.com/go/learn_programmingAS3samples_flash_kr을 방문하십시오. DisplayObjectTransformer 응용 프로그램 파일은 Samples/DisplayObjectTransformer 폴더에 있으며 이 응용 프로그램은 다음과 같은 파일로 구성됩니다.

파일

설명

DisplayObjectTransformer.mxml

또는

DisplayObjectTransformer.fla

Flash(FLA) 또는 Flex(MXML) 형식의 기본 응용 프로그램 파일입니다.

com/example/programmingas3/geometry/MatrixTransformer.as

행렬 변환을 적용하는 데 필요한 메서드가 포함된 클래스입니다.

img/

응용 프로그램에 사용되는 샘플 이미지 파일이 포함된 디렉토리입니다.

세부 목차

MatrixTransformer 클래스 정의
응용 프로그램에서 MatrixTransformer.transform() 메서드 호출

MatrixTransformer 클래스 정의

MatrixTransformer 클래스에는 Matrix 객체의 기하학적 변환을 적용하는 정적 메서드가 포함되어 있습니다.

transform() 메서드

transform() 메서드에는 다음 항목에 대한 각 매개 변수가 포함되어 있습니다.

반환값은 결과 행렬입니다.

transform() 메서드는 클래스의 다음 정적 메서드를 호출합니다.

각 메서드는 변환 효과가 적용된 소스 행렬을 반환합니다.

skew() 메서드

skew() 메서드는 행렬의 bc 속성을 조정하여 행렬을 기울입니다. 선택적 매개 변수인 unit은 기울이기 각도를 정의하는 데 사용되는 단위를 결정하고, 필요한 경우 이 메서드는 angle 값을 라디안으로 변환합니다.

if (unit == "degrees") 
{
    angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
    angle = Math.PI * 2 * angle / 100;
}

기울이기 변환을 적용하기 위해 skewMatrix라는 Matrix 객체를 만들어 조정합니다. 처음에는 다음과 같이 단위 행렬입니다.

var skewMatrix:Matrix = new Matrix();

skewSide 매개 변수는 기울이기 변환을 적용할 변을 결정합니다. 이 매개 변수가 "right"로 설정되면 다음 코드에서는 행렬의 b 속성을 설정합니다.

skewMatrix.b = Math.tan(angle);

그렇지 않은 경우에는 다음과 같이 Matrix 객체의 c 속성을 조정하여 아래쪽 변이 기울어집니다.

skewMatrix.c = Math.tan(angle);

그런 다음 아래 예제와 같이 두 행렬을 연결하여 기존 행렬에 결과 기울이기가 적용됩니다.

sourceMatrix.concat(skewMatrix);
return sourceMatrix;

scale() 메서드

다음 예제와 같이 scale() 메서드는 먼저 배율 인수가 백분율로 지정되어 있는 경우 이를 조정하고 행렬 객체의 scale() 메서드를 사용합니다.

if (percent)
{
    xScale = xScale / 100;
    yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;

translate() 메서드

translate() 메서드는 다음과 같이 행렬 객체의 translate() 메서드를 호출하여 dxdy 평행 이동 인수를 적용합니다.

sourceMatrix.translate(dx, dy);
return sourceMatrix;

rotate() 메서드

rotate() 메서드는 입력 회전 인수가 도 또는 그래디언트 단위로 지정되어 있는 경우 이를 라디안으로 변환한 다음, 행렬 객체의 rotate() 메서드를 호출합니다.

if (unit == "degrees")
{
    angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
    angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;

응용 프로그램에서 MatrixTransformer.transform() 메서드 호출

응용 프로그램에는 사용자가 변환 매개 변수를 입력할 수 있는 사용자 인터페이스가 포함되어 있습니다. 매개 변수가 입력되면 응용 프로그램에서는 다음과 같이 표시 객체에 대한 transform 속성의 matrix 속성과 함께 해당 매개 변수를 Matrix.transform() 메서드에 전달합니다.

tempMatrix = MatrixTransformer.transform(tempMatrix, 
                                         xScaleSlider.value, 
                                         yScaleSlider.value,
                                         dxSlider.value, 
                                         dySlider.value,
                                         rotationSlider.value,
                                         skewSlider.value, 
                                         skewSide );

그런 다음 표시 객체에 대한 transform 속성의 matrix 속성에 반환값을 적용하여 변환을 트리거합니다.

img.content.transform.matrix = tempMatrix;


Flash CS3

 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000189.html