2011-02-17 96 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(); 

這對我的作品,並關閉整個應用程序。

相關問題