본문 바로가기

AS

스테이지(Stage) 크기 조절 제어

스테이지 크기 조절 제어
Flash Player 화면 크기를 조절하면 스테이지 내용이 이에 맞게 자동으로 조절됩니다. Stage 클래스의 scaleMode 속성은 스테이지 내용 조절 방식을 결정합니다. 이 속성은
flash.display.StageScaleMode 클래스의 상수로 정의되는 서로 다른 네 가지 값으로 설정할 수
있습니다.
세 가지 scaleMode 값(StageScaleMode.EXACT_FIT, StageScaleMode.SHOW_ALL 및
StageScaleMode.NO_BORDER)의 경우 Flash Player는 해당 경계에 맞춰 스테이지 내용의 크기
를 조절합니다. 이 세 가지 옵션에 따라 다음과 같이 크기 조절 수행 방식이 달라집니다.



StageScaleMode.EXACT_FIT - SWF 크기를 비례적으로 조절합니다.

StageScaleMode.SHOW_ALL - 표준 TV에서 와이드 스크린 영화를 볼 때 나타나는 검정
색 바 같은 테두리의 표시 여부를 결정합니다.

StageScaleMode.NO_BORDER - 내용을 부분적으로 자를 수 있는지 여부를 결정합니다.


또는 scaleMode가 StageScaleMode.NO_SCALE로 설정된 경우, 뷰어에서 Flash Player 윈도우크기를 조절할 때 스테이지 내용은 각각 정의된 크기로 유지됩니다. 이 크기 조절 모드에서만 Stage 클래스의 width 및 height 속성을 사용하여 크기 조절된 Flash Player 윈도우의 실제 픽셀 크기를 결정할 수 있습니다. 다른 크기 조절 모드에서는 stageWidth 및 stageHeight 속성이 항상 SWF의 원래 폭 및 높이를 반영합니다. 또한 scaleMode가
StageScaleMode.NO_SCALE로 설정되고 SWF 파일의 크기가 조절된 경우 Stage 클래스의
resize 이벤트가 전달되어 이에 따라 조절할 수 있습니다.

따라서 scaleMode를 StageScaleMode.NO_SCALE로 설정하면 원하는 경우 윈도우 크기 조절에 맞춰 화면 내용을 조절하는 방법을 보다 세밀하게 제어할 수 있습니다. 예를 들어, 비디오와 컨트롤 막대가 포함된 SWF에서 스테이지의 크기를 조절할 때 컨트롤 막대를 동일한 크
기로 유지하고 스테이지 크기 변경에 맞춰 비디오 윈도우의 크기만 변경할 수 있습니다.
다음 예제에서 이를 확인할 수 있습니다.
// videoScreen 은 비디오를 포함하는 표시 객체 ( 예 : Video 인스턴스 ) 로서
// 스테이지의 왼쪽 위 모서리에 배치되어야 하며 SWF 크기 조절 시 videoScreen 의
// 크기도 조절되어야 합니다 .
// controlBar 는 여러 버튼을 포함하는 표시 객체 ( 예 : Sprite) 로서
// 스테이지의 왼쪽 아래 모서리 (videoScreen 아래 ) 에 배치되어야 하며
// SWF 크기 조절 시 controlBar 의 크기도 조절되면 안됩니다 .


import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

var swfStage:Stage = videoScreen.stage;
swfStage.scaleMode = StageScaleMode.NO_SCALE;
swfStage.align = StageAlign.TOP_LEFT;

function resizeDisplay(event:Event):void
{
    var swfWidth:int = swfStage.stageWidth;
    var swfHeight:int = swfStage.stageHeight;
    // 비디오의 윈도우 크기를 조절합니다 .
    var newVideoHeight:Number = swfHeight - controlBar.height;
    videoScreen.height = newVideoHeight;
    videoScreen.scaleX = videoScreen.scaleY;
    // 컨트롤 막대의 위치를 변경합니다 .
    controlBar.y = newVideoHeight;
}

swfStage.addEventListener(Event.RESIZE, resizeDisplay
);