3D 표시 객체 만들기 및 이동
Flash Player 10 이상, Adobe AIR 1.5 이상
2D 표시 객체를 3D 표시 객체로 변환하려면 표시 객체의
z
속성을 숫자 값으로 명시적으로 설정합니다.
z
속성에 값을 할당하면 표시 객체에 대한 새 Transform 객체가 만들어집니다.
DisplayObject.rotationX
또는
DisplayObject.rotationY
속성을 설정해도 새 Transform 객체가 만들어집니다. Transform 객체에는 표시 객체가 3D 공간에 표시되는 방식을 제어하는
Matrix3D
속성이 있습니다.
다음 코드에서는 "leaf"라는 표시 객체의 좌표를 설정합니다.
leaf.x = 100; leaf.y = 50; leaf.z = -30;
leaf라는 Transform 객체의
matrix3D
속성에서 이러한 값과 해당 값에서 파생된 속성을 볼 수 있습니다.
var leafMatrix:Matrix3D = leaf.transform.matrix3D;
trace(leafMatrix.position.x);
trace(leafMatrix.position.y);
trace(leafMatrix.position.z);
trace(leafMatrix.position.length);
trace(leafMatrix.position.lengthSquared);
Transform 객체의 속성에 대한 자세한 내용은
Transform
클래스를 참조하십시오. Matrix3D 객체의 속성에 대한 자세한 내용은
Matrix3D
클래스를 참조하십시오.
3D 공간에서 객체 이동
x, y 또는 z
속성의 값을 변경하여 3D 공간에서 객체를 이동할 수 있습니다.
z
속성의 값을 변경하면 객체는 뷰어에서 더 가깝게 또는 더 멀리 표시됩니다.
다음 코드에서는 이벤트에 대한 응답으로 두 타원의
z
속성 값을 변경하여 해당 타원을 z축을 따라 뒤로 및 앞으로 이동합니다.
ellipse2
는
ellipse1
보다 빠르게 이동합니다. 즉, 해당
z
속성은 각 프레임 이벤트에서 20의 배수만큼씩 증가하는 반면
ellipse1
의
z
속성은 10의 배수만큼씩 증가합니다.
var depth:int = 1000;
function ellipse1FrameHandler(e:Event):void
{
ellipse1Back = setDepth(e, ellipse1Back);
e.currentTarget.z += ellipse1Back * 10;
}
function ellipse2FrameHandler(e:Event):void
{
ellipse2Back = setDepth(e, ellipse1Back);
e.currentTarget.z += ellipse1Back * 20;
}
function setDepth(e:Event, d:int):int
{
if(e.currentTarget.z > depth)
{
e.currentTarget.z = depth;
d = -1;
}
else if (e.currentTarget.z < 0)
{
e.currentTarget.z = 0;
d = 1;
}
}
3D 공간에서 객체 회전
객체의 회전 속성인
rotationX
,
rotationY
및
rotationZ
를 어떻게 설정하느냐에 따라 세 가지 방법으로 객체를 회전할 수 있습니다.
다음 그림에서는 회전되지 않은 두 개의 사각형을 보여 줍니다.
다음 그림에서는 두 사각형의 컨테이너에 대한
rotationY
속성 값을 늘려 y축을 기준으로 사각형을 회전한 모양을 보여 줍니다. 두 사각형의 컨테이너 또는 부모 표시 객체를 회전하면 두 사각형이 모두 회전합니다.
container.rotationY += 10;
다음 그림에서는 사각형의 컨테이너에 대한
rotationX
속성을 설정할 때 나타나는 결과를 보여 줍니다. 이렇게 하면 사각형이 x축을 기준으로 회전합니다.
다음 그림에서는 사각형에 대한 컨테이너의
rotationZ
속성 값을 늘릴 때 나타나는 결과를 보여 줍니다. 이렇게 하면 사각형이 z축을 기준으로 회전합니다.
표시 객체는 3D 공간에서 이동과 회전을 동시에 할 수 있습니다.
|
|
|