這個questin聽起來可能非常簡單,但我無法在官方文檔或官方論壇或任何地方找到答案。在Actionscript/Flex應用程序中捕捉關閉/卸載事件
我只是尋找用戶關閉應用程序時觸發的事件。此事件必須存在,閃存已經有11個版本的現在,我無法想象沒有這樣的事情......
在此先感謝
這個questin聽起來可能非常簡單,但我無法在官方文檔或官方論壇或任何地方找到答案。在Actionscript/Flex應用程序中捕捉關閉/卸載事件
我只是尋找用戶關閉應用程序時觸發的事件。此事件必須存在,閃存已經有11個版本的現在,我無法想象沒有這樣的事情......
在此先感謝
嘛,想想看一分鐘。你正在尋求一個事件,在應用程序關閉時被解僱......所以,事件觸發了什麼,以及將要處理的事件是什麼?應用程序?但它只是關閉。當然,你可以在javascript中做一些事情並檢查flash嵌入的狀態,但即使這樣也不一定能正常工作,這取決於flash player被卸載的方式(例如用戶關閉瀏覽器)。此外,如果用戶殺死Flash沙盒或瀏覽器會發生什麼?無法從終止的應用程序發送事件。
最終,我會仔細看看你想要完成什麼,並試圖找出一個更好的方法。如果您擔心服務器等遠程資源會清理某些資源,您可能需要實施Keepalive信號,並在您停止接收信號時進行清理。
請看看Closing event 您可以附加事件監聽器,並在回調函數中使用防止默認,所以窗口不會關閉,您可以運行您的邏輯。之後,通過調用close()函數,可以關閉窗口。
所以你確定知道你想要在關閉時運行成功執行。
我在JavaScript AIR應用程序中做了類似的事情,並且工作正常。 關閉事件對象'air.Event.CLOSING' 關閉功能'window.nativeWindow.close()' – Pradeep
既然您正在尋找AIR特定的解決方案,您將需要監聽主應用程序標記(WindowedApplication)上的closing事件。
概念是這樣的:
<s:WindowedApplication closing="onClosing(event)">
<fx:Script>
public function onClosing(event:Event):void{
// execute code here
}
</fx:Script>
</s:WindowedApplication>
您還可以檢查close event在同一類,或在NativeWindow類的exiting事件。你可以使用像這樣訪問NativeWindow:
<s:WindowedApplication creationCompete="onCreationComplete(event)">
<fx:Script>
public function onCreationComplete(event:Event):void{
this.addEventListener('exiting',onExiting);
}
public function onExiting(event:Event):void{
// execute code here
}
</fx:Script>
</s:WindowedApplication>
謝謝你的時間。我不知道我必須是這個特定的:當容器是一個WindowedApplication時,你的解決方案可以工作。不幸的是,由於關於電視應用程序的Adobe規範,我不得不使用應用程序。然後你的解決方案都無法工作。 – Cystack
@cystack我很驚訝你在原始問題中遺漏了多少重要細節。你真的應該編輯你的問題來指定你正在構建一個AIR for TV應用程序。 AIR for TV基於AIR 2.5;這還不到一歲。你所處的情況與你對11個Flash版本的投訴會讓我們相信的情況完全不同。 – JeffryHouser
我無法利用瀏覽器工具,因爲我在做一個AIR應用程序。無論是在桌面上(類似Alt-F4的動作)還是在電視上(非常依賴TV),我都想清除服務器端的資源。 Keepalive信號確實聽起來像是過度殺傷性的,我甚至不認爲我有權訪問服務器的代碼:/所以你的分析是正確的,但我的問題仍然是相同的:) – Cystack
@cystack對於記錄AIR尚未出現爲11個版本。如果你正在尋找一個AIR特定的答案,你應該指定它作爲你問題的一部分;並可能刪除您對Flash年齡的投訴。 – JeffryHouser
我+1這是因爲這是一個勇敢的嘗試回答一個非具體的問題。 – JeffryHouser