티스토리 뷰

플래시에서 'Properties' 항목에 '3D Position And View' 항목이 있는데, 이 항목의 'Perspective Angle', 'Center X', Center Y' 속성을 이용해서 회전축과 거리감을 설정할 수 있습니다. 그런데, 플래시에서 설정할 경우 전역 설정으로 모든 객체가 영향을 받게 되는데 각각의 객체마다 다른 설정을 하려면 ActionScript 로 작성하면 됩니다.

Properties - 3D Position And View

Properties - 3D Position And View



아래의 플래시는 샘플로 만들어 본 것이고 각각 값을 조정해서 어떻게 변하는지 확인 할 수 있습니다.

샘플



사용 코드
import flash.display.DisplayObject;
import flash.events.*;
import flash.geom.PerspectiveProjection;
import flash.geom.Point;
import fl.events.SliderEvent;

tSlider.addEventListener(SliderEvent.THUMB_DRAG, handlerUIEvent);
tCenterX.addEventListener(Event.CHANGE, handlerUIEvent);
tCenterY.addEventListener(Event.CHANGE, handlerUIEvent);
tCenterY.dispatchEvent(new Event(Event.CHANGE));
addEventListener(Event.ENTER_FRAME, handlerEvent);

function handlerUIEvent(e:*):void
{
	sCenter.x = tCenterX.value;
	sCenter.y = tCenterY.value;
	ConfigPerspective(box, tSlider.value, tCenterX.value, tCenterY.value);
}

function handlerEvent(e:Event):void
{
	box.rotationY = (box.rotationY + 2) % 360;
}

/**
 * @param  DisplayObject  target  대상 객체
 * @param  Number  fieldOfView  시야 (거리감)
 * @param  Number  centerX  회전축이 될 X 값
 * @param  Number  centerY  회전축이 될 Y 값
 **/
function ConfigPerspective(target:DisplayObject, fieldOfView:Number, centerX:Number, centerY:Number):void
{
	var p :PerspectiveProjection = new PerspectiveProjection();
		p.fieldOfView = Math.max(1, Math.min(179, fieldOfView));
		p.projectionCenter = new Point(centerX, centerY);
	target.transform.perspectiveProjection = p;
}

샘플 파일

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함