【问题标题】:Programmatically close an AIR application以编程方式关闭 AIR 应用程序
【发布时间】:2011-06-29 05:57:22
【问题描述】:

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

在我的 Spark WindowedApplication 中,我有:

this.addEventListener( Event.CLOSING, shutdownApp );

当然还有一个 shutdownApp 方法的实现(基本上是整理临时文件)。

这适用于窗口右上角的关闭按钮。但是我也有需要关闭应用程序的功能。在我调用的代码中:

NativeApplication.nativeApplication.exit();

但是这不会触发 Event.CLOSING 方法,所以我的临时文件没有被清除。我不应该调用 nativeApplication.exit 吗?如果是这样,我应该叫什么?我宁愿不必在 NativeApplication.exit() 之前调用我的 shutdownApp 方法,因为这感觉不太优雅。

任何人都可以阐明这样做的正确方法吗?

谢谢,

菲尔

【问题讨论】:

    标签: apache-flex air shutdown flex-spark


    【解决方案1】:

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

    stage.nativeWindow.close();
    

    【讨论】:

    • 太棒了!这是唯一对我有用的解决方案,thanx!
    【解决方案2】:

    文档在这方面看起来有点模棱两可,我会有和你一样的解释。您是否尝试过 WindowedApplication 上的 close 或 exit 方法?

    类似这样,FlexGlobals 和 topLevelApplication:

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

    或

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

    【讨论】:

    • 当我第一次尝试这个时,我得到了一个 TypeError:错误 #1009:无法访问空对象引用的属性或方法。这是因为我导入了 MX WindowedApplication 而不是 Spark。您的建议有效(我使用了 close() )。谢谢!
    【解决方案3】:

    这里就给个答案吧,因为我搜索了一个相关的问题,没找到。

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

    我的主要问题是窗口关闭事件。像这样用 ActionScript 注册它

          this.addEventListener(Event.Closing, windowClosed);
    

    不起作用:没有调度关闭事件。 唯一的方法是直接在 MXML 文件开头的 s:Window 元素中注册一个事件处理程序。我只是添加了关闭属性:

          closing="window1_closingHandler(event)"
    

    然后在我调用的 window1_closureHandler-function 中调度了事件

          NativeApplication.nativeApplication.exit();
    

    这对我有用并关闭了整个应用程序。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2016-04-25
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多