[AIR] AIR Window Basics

FLEX/FLEX 2010. 7. 12. 21:31

AIR Window Basics

  • 두 가지 Window APIs
NativeWindow Class JavaScript Window Class

Flash-oriented

Flash stage와 display list 사용

visual object 추가:

Window stage의 display list에 추가

HTML-oriented

HTML, CSS, JavaScript 사용

visual object 추가:

DOM에 추가

  • HTML Window의 nativeWindow property
    • HTML Window는 NativeWindow의 특수한 카테고리
    • nativeWindow 프로퍼티를 통해서 기본이 되는 Native Window 인스턴스에 접근할 수 있다.
  • Event-based programming model
    • Window object의 프로퍼티를 변경하거나 외형, 행동에 영향을 미치는 메서드를 호출하면 Event가 발생하여 관련된 컴포넌트들이 적절하게 반응하도록 한다.
  • 참고
    • window API에 대한 보다 상세한 문서:

http://livedocs.adobe.com/labs/flex/3/langref/mx/core/Window.html http://livedocs.adobe.com/labs/flex/3/langref/flash/display/NativeWindow.html

  • 기본 윈도우
    • 어플리케이션 기술 파일(ProjectName-app.xml)의 rootContent element에 지정한 파라미터를 이용하여 자동으로 생성된다.
    • rootContent가 SWF 파일이면 NativeWindow가, HTML 파일이면 HTML Window가 생성된다. (# 이후 HTML 윈도우에 대한 내용은 생략 #)
  1. <rootContent systemChrome="standard" transparent="false" visible="true">
    [SWF reference is generated]</rootContent>

  •  Styles of Native Windows
    • Type, System Chrome, Transparency 값의 조합으로 설정한다.
    • OS에 따라 각 설정 조합이 아래와 같이 표현되며, 함께 쓰일 수 없는 조합에 주의해야 한다.

window_styles_1.jpg

window_styles_2.jpg

 Window 생성하기

  •  Window 생성 방법
    • 기본 윈도우(First window): 어플리케이션 기술 파일의 rootContent에 파라미터로 기술된 속성을 가지고 자동으로 만들어진다. Stage.window property를 통해서 접근
    • NativeWindowInitOptions object 생성/설정 후 window 생성자에 넘겨서 생성(ActionScript): 생성자가 돌려주는 object reference로 직접 접근
    • JavaScript Window.open() method: 생략 
  1. //create the init options
  2. var options:NativeWindowInitOptions = new NativeWindowInitOptions();
    options.transparent = false;
    options.systemChrome = NativeWindowSystemChrome.STANDARD;
    options.type = NativeWindowType.NORMAL;
  3. //create the window
    var newWindow:NativeWindow = new NativeWindow(false,options);
    newWindow.title = "A title";
    newWindow.width = 600;
    newWindow.height = 400;
  4. //add a sprite to the window
    newWindow.stage.align = StageAlign.TOP_LEFT;
    newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
    //show the new window
  5. newWindow.visible = true;

Window 조작하기

  • NativeWindow instance 얻기 
    • Window 생성자: var win:NativeWindow = new NativeWindow(false, options);
    • Window stage: stage.window
    • 같은 stage 위에 있는 Display Object: myDisplayObject.stage.window
    • 윈도우 이벤트: 이벤트의 target property가 이벤트를 발생시킨 윈도우를 가리킨다.
    • HTMLControl 또는 HTML Window: window.nativeWindow property를 통해서 접근
  • 기타 작업 
    • 최대화: win.maximize();
    • 최소화: win.minimize() ;
    • 이전 크기로: win.restore();
    • 닫기
      • NativeWindow.close() method 호출
      • 비동기 작동: closing 프로세스가 진행되는 동안 어플리케이션은 계속 실행된다.
      • 닫는 작업이 모두 완료되면 close event를 발생시킨다.
      • 닫기가 종료된 후에도 NativeWindow object는 유효하지만 속성이나 메서드에 접근하면 대부분 IllegalOperationError가 발생한다.
      • closed property로 창이 닫혔는지 여부를 확인할 수 있다.
    • 윈도우 작업 취소(Cancellation) 
      • System Chrome에 대한 사용자 조작은 이벤트를 발생시키기 때문에 해당 event를 받아서 preventDefault()를 호출하면 해당 동작을 취소할 수 있다.
      • System Chrome이 아닐 경우 해당 작업에 대한 notification event를 발생시키고 preventDefault()가 호출되지 않았는지 확인하는 방법으로 취소를 구현할 수 있다.
  1. public function onCloseCommand(event:MouseEvent):void{
        var closingEvent:Event = new Event(Event.CLOSING,true,true);
        dispatchEvent(closing);
        if(!closingEvent.isDefaultPrevented()) { 
  2.         win.close();
        }
    }
: