2011-02-17 84 views
5

我想知道以编程方式关闭AIR应用程序的正确方法。以编程方式关闭AIR应用程序

在我的星火WindowedApplication的我:

this.addEventListener(Event.CLOSING, shutdownApp); 

,当然还有shutdownApp方法的实现(这基本上收拾临时文件)。

这适用于窗口的右上角关闭按钮。不过,我也有需要关闭应用程序的功能。在我所称的代码中:

NativeApplication.nativeApplication.exit(); 

但是,这不会触发Event.CLOSING方法,因此我的临时文件不会被清除。我不应该调用nativeApplication.exit吗?如果是这样,我应该怎么称呼呢?我宁愿不必在NativeApplication.exit()之前调用我的shutdownApp方法,因为这样感觉不那么优雅。

任何人都可以在正确的方式上做到这一点吗?

感谢,

菲尔

回答

4

的文档看起来这有点含糊,我不得不说,你做了同样的解释。您是否尝试过使用WindowedApplication上的close或退出方法?

这样的事情,与FlexGlobals和topLevelApplication中:

(FlexGlobals.topLevelApplication as WindowedApplication).close(); 

(FlexGlobals.topLevelApplication as WindowedApplication).exit(); 
+1

当我第一次尝试这样做时,我得到了TypeError:错误#1009:无法访问空对象引用的属性或方法。这是因为我导入了MX WindowedApplication而不是Spark。你的建议奏效了(我用close())。谢谢! – Phil 2011-02-17 17:28:49

7

我知道这个问题已经回答了,并接受,但想分享,我用。

stage.nativeWindow.close(); 
+0

优秀!这是实际为我工作的唯一解决方案,thanx! – 2014-08-07 12:17:23

1

只是在这里给出一个答案,因为我搜索了一个相关的问题,但无法找到某物。

我想做类似的事情,关闭一个AIR应用程序时,按下文档窗口(spark.components.Window)的本机关闭按钮时认为sparked WindowedApplication容器(应用程序主窗口)仍然处于活动状态并管理本地菜单(在应用程序启动时,它也用于显示启动画面,它必须保持打开状态,因为如果它关闭,本地菜单将不会显示或可以再次访问,因此其可见属性设置为false )。

我的主要问题是窗户关闭事件。用动态脚本注册,如

 this.addEventListener(Event.Closing, windowClosed); 

不起作用:没有关闭事件被分派。 唯一的方法是直接在MXML文件开始处的s:Window元素中注册一个事件处理程序。我只是扔在收盘属性:

 closing="window1_closingHandler(event)" 

事件被派往然后在window1_closingHandler功能我叫

 NativeApplication.nativeApplication.exit(); 

这对我的作品,并关闭整个应用程序。