FLEX로 구현된 RIA중 전체화면모드로 전환되는 기능이 필요하여, 그 구현 방법을 찾아보았습니다.
해결책은 의외로 간단했습니다.
핵심은 Application.application.stage.displayState를 어떤 값으로 설정하느냐에 따라 바뀌는 것이었습니다.
import flash.display.StageDisplayState;
private function toggleFullScreen():void {
try {
switch (Application.application.stage.displayState) {
case StageDisplayState.FULL_SCREEN:
/* 전체화면 모드이므로 일반 화면으로 전환시킴.*/
Application.application.stage.displayState = StageDisplayState.NORMAL;
break;
default:
/* 전체화면모드가 아니므로 전체화면으로 전환함.*/
Application.application.stage.displayState = StageDisplayState.FULL_SCREEN;
break;
}
} catch (err:SecurityError) {
// 무시하기
}
}
이와 더불어 전체화면변환시 이벤트 핸들러도 설정해 주면 유용할 것 같았습니다.
우선 애플리케이션수준의 이벤트핸들러에서 전체화면 변환 이벤트핸들러를 지정해 주면 됩니다.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init(event)">
이제 init함수를 만들어 줘야겠지요.
private function init(evt:Event):void {
Application.application.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler);
}
private function fullScreenHandler(evt:FullScreenEvent):void {
if (evt.fullScreen) {
// 전체화면시 해야 할 일.
}else{
// 일반화면시 해야 할 일
}
}
Application.application.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler);
}
private function fullScreenHandler(evt:FullScreenEvent):void {
if (evt.fullScreen) {
// 전체화면시 해야 할 일.
}else{
// 일반화면시 해야 할 일
}
}
자. 이것으로 FLEX쪽은 끝났습니다. 그러나 한가지 남은 일이 있었으니..SWF를 읽어오는 HTML문서에서 <object /> 또는 <embed /> 사이에 "allowFullScreen" 속성을 "true"로 설정해 주어야 합니다. FlexBuilder이용시에는 HTML래퍼에서 수정해 주어야 합니다.
AC_FL_RunContent(
"src", "main",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "main",
"quality", "high",
"bgcolor", "#869ca7",
"name", "main",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer",
"allowFullScreen", "true"
);
"src", "main",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "main",
"quality", "high",
"bgcolor", "#869ca7",
"name", "main",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer",
"allowFullScreen", "true"
);
전체화면모드 사용시에는 키보드 입력이 수행되지 않습니다.
아. 그리고 Application.application대신 systemManager를 사용해도 된다네요. 이 경우에는 mx.managers.SsytemManager를 import해야겠지요.
import mx.managers.SystemManager;
systemManager.stage.displayState = StageDisplayState.NORMAL;
systemManager.stage.displayState = StageDisplayState.NORMAL;
'2. 소프트웨어 > 2.3 RIA' 카테고리의 다른 글
| BASE 64..인코딩이 언제부터 압축알고리즘이었을까 ㅡ.ㅡ; (2) | 2008/09/17 |
|---|---|
| FLEX에서 전체화면모드 사용하기. (2) | 2008/07/24 |







