Закрытие дочерних nativeWindows при закрытии основного приложения (через ОС) - PullRequest
0 голосов
/ 15 марта 2012

Я схожу с ума по этому поводу!У меня есть приложение Air (2.6), которое при запуске открывает всплывающее окно NativeWindow для обработки предупреждений.

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

1 Ответ

0 голосов
/ 15 марта 2012

Вы можете закрыть все собственные окна, которые открыты, используя что-то похожее на это:

 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();
        }
    }
 }

Предполагается, что у вас есть обработчик, который вызывает exit:

NativeApplication.nativeApplication.exit();

Вы можете разместить этот код перед этим звонком.

...