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 공간에서 이동과 회전을 동시에 할 수 있습니다. |
|