Flash CS3 설명서 |
|||
| ActionScript 3.0 프로그래밍 > 기하 도형을 사용한 작업 > 예제: 표시 객체에 행렬 변환 적용 | |||
DisplayObjectTransformer 샘플 응용 프로그램에서는 다음과 같이 Matrix 클래스를 사용하여 표시 객체를 변환하는 다양한 기능을 보여 줍니다.
이 응용 프로그램에는 다음과 같이 행렬 변환 매개 변수를 조정할 수 있는 인터페이스가 있습니다.
사용자가 [Transform] 버튼을 클릭하면 응용 프로그램에서 적절한 변환을 적용합니다.
원본 표시 객체와 -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 클래스에는 Matrix 객체의 기하학적 변환을 적용하는 정적 메서드가 포함되어 있습니다.
transform() 메서드에는 다음 항목에 대한 각 매개 변수가 포함되어 있습니다.
sourceMatrix--이 메서드로 변환하는 입력 행렬xScale 및 yScale--x 및 y 배율 인수dx 및 dy--x 및 y 평행 이동 크기(픽셀)rotation--회전 크기(도)skew--기울이기 인수(백분율)skewType--기울이기 방향("right" 또는 "left")반환값은 결과 행렬입니다.
transform() 메서드는 클래스의 다음 정적 메서드를 호출합니다.
skew() scale() translate() rotate() 각 메서드는 변환 효과가 적용된 소스 행렬을 반환합니다.
skew() 메서드는 행렬의 b 및 c 속성을 조정하여 행렬을 기울입니다. 선택적 매개 변수인 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() 메서드를 사용합니다.
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
translate() 메서드는 다음과 같이 행렬 객체의 translate() 메서드를 호출하여 dx 및 dy 평행 이동 인수를 적용합니다.
sourceMatrix.translate(dx, dy); return sourceMatrix;
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;
응용 프로그램에는 사용자가 변환 매개 변수를 입력할 수 있는 사용자 인터페이스가 포함되어 있습니다. 매개 변수가 입력되면 응용 프로그램에서는 다음과 같이 표시 객체에 대한 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