这个questin可能听起来非常非常简单,但我无法在官方文档或官方论坛或任何地方找到答案。
我只是在寻找用户关闭应用程序时触发的事件。这个事件必须存在,Flash已经出现了11个版本,我无法想象没有这样的事情......
提前致谢
答案 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()函数,您可以关闭窗口。
所以你确定你在结束时想要运行的东西能够成功执行。