2012-03-14 3 views
0

나는 이것에 미쳐 가고 있습니다! 실행중인 경우 NativeWindow 팝업을 열어 경고를 처리하는 Air (2.6) 앱이 있습니다.주 앱이 닫히면 (OS를 통해) 하위 nativeWindows를 닫습니다.

public var _alertWindow:NativeWindow; 

_alertWindow = new NativeWindow(windowOptions); 
_alertWindow.stage.scaleMode = StageScaleMode.NO_SCALE; 
_alertWindow.stage.align = StageAlign.TOP_LEFT; 
_alertWindow.bounds = new Rectangle(0, 0, content.width, content.height); 

_alertWindow.title = ""; 
_alertWindow.alwaysInFront = true; 

_alertWindow.x = Screen.mainScreen.bounds.width - _containerWidth; 
_alertWindow.y = Screen.mainScreen.bounds.height - _containerHeight; 
_alertWindow.stage.addChild(_contentContainer); 

이 모든 위대한 작품 - 내가 전화를 닫기 버튼을 통해 응용 프로그램을 닫을 때 :

AppName._alert._alertWindow.close(); 
    NativeApplication.nativeApplication.exit(); 

나는 모든 플랫폼에서이 문제는 없었습니다. 그러나 Windows7에서 작업 표시 줄을 마우스 오른쪽 버튼으로 클릭하고 '창 닫기'를 선택하면 하위 NativeWindow가 아니라 기본 앱 만 닫힙니다. (이것은 백그라운드에서 실행중인 응용 프로그램을 유지합니다 - 그래서 사용자가 다시 실행하려고하면 실행되지 않습니다) 나는 Event.CLOSING과 같은 다양한 이벤트 리스너를 추가하려고 시도했지만 여러 가지 다른 방법이 실패했지만 실패했습니다. 누구든지 windows7에서 '창 닫기'옵션에서 창을 닫는 방법에 대한 아이디어가있는 경우. 당신의 도움에 대한

감사

Jono

답변

0

당신이에 simillar 것을 사용하여 열려있는 모든 기본 윈도우 닫을 수 있습니다 :

: 당신이 출구를 호출 어딘가에 핸들러를 가정하면

private function closeMenus() : void 
{ 
    var nativeWindows:Array = NativeApplication.nativeApplication.openedWindows; 

    for (var i:int = 0; i< nativeWindows.length; i++) 
    { 
     if(!(nativeWindows[i] as NativeWindow).closed) 
     { 
      (nativeWindows[i] as NativeWindow).close(); 
     } 
    } 
} 

NativeApplication.nativeApplication.exit(); 

이 호출 전에이 코드를 삽입 할 수 있습니다.

+0

예! .openWindows 정말 고마워! 진지하게 이것과 더불어 지혜 끝에 있었다! – Jono