在Actionscript / Flex应用程序中捕获close / unload事件

时间:2011-08-22 19:49:11

标签: flash flex actionscript-3 air

这个questin可能听起来非常非常简单,但我无法在官方文档或官方论坛或任何地方找到答案。

我只是在寻找用户关闭应用程序时触发的事件。这个事件必须存在,Flash已经出现了11个版本,我无法想象没有这样的事情......

提前致谢

3 个答案:

答案 0 :(得分:3)

因为您正在寻找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>

答案 1 :(得分:2)

好吧,想一下。你要求一个事件,当应用程序关闭时被解雇......那么,是什么激发了事件,以及将要处理什么?应用程序?但它刚刚关闭。当然,您可以在javascript中执行某些操作并检查Flash嵌入的状态,但即使这并不总是有效,具体取决于Flash播放器的卸载方式(例如,用户关闭浏览器)。此外,如果用户杀死Flash沙盒或浏览器会发生什么?无法从已终止的应用程序发送事件。

最终,我会仔细研究一下你正在努力实现的目标,并试图找到一种更好的方法。如果您担心像服务器清理某些资源这样的远程资源,您可能希望实现一个keepalive信号,并在您停止接收它时进行清理。

答案 2 :(得分:0)

请查看Closing event 您可以将事件监听器附加到它,并且在回调函数中使用防止默认值,因此窗口不会关闭,您可以运行逻辑。之后通过调用close()函数,您可以关闭窗口。

所以你确定你在结束时想要运行的东西能够成功执行。