主应用程序关闭时关闭子nativeWindows(通过操作系统)

时间:2012-03-14 23:00:12

标签: flash air desktop-application nativewindow

我为此疯狂!我有一个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中的“关闭窗口”选项关闭窗口有任何想法。

感谢您的帮助

城野

1 个答案:

答案 0 :(得分:0)

您可以使用类似于此的内容关闭所有打开的本机窗口:

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

您可以在此次通话前放置此代码。