尝试阻止应用程序在单击X
按钮时关闭,它仍然关闭,但AIR进程正在任务管理器中运行。代码有什么问题?
申请表完成:
NativeApplication.nativeApplication.addEventListener(Event.EXITING, onExiting);
结束代码:
private function onExiting(e:Event):void
{
e.preventDefault();
}
答案 0 :(得分:4)
试试Event.CLOSING
。这是我用来取消关闭的。
Event.EXITING
,并且仅用于清理,而不是阻止应用程序关闭。
来自docs:
在Windows上,你唯一能得到的 退出事件是在关闭之后 最后一个窗口(当autoExit = true时)。
示例“unclosable”应用程序:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
initialize="init()">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void{
this.addEventListener(Event.CLOSING, function(e:Event):void{
e.preventDefault();
Alert.show('Unclosable!');
});
}
]]>
</fx:Script>
</s:WindowedApplication>
祝你好运,答案 1 :(得分:0)
警报消息处理发生在与应用程序线程不同的线程中,因此应用程序不会等待警报消息框。诀窍是拥有一个初始化值为false的全局变量。在关闭事件处理程序时,如果值未更改为true,则取消关闭事件。这允许显示警报消息。如果用户按下是,则将变量设置为true,然后再次触发退出功能。
private var boolExit:Boolean=false;
private function alertClickHandler(event:CloseEvent):void{
if(event.detail==Alert.YES){
boolExit=true;
NativeApplication.nativeApplication.exit();
}
}
private function AppExit(e:Event):void{
if(!boolExit)
e.preventDefault();
Alert.show("Do you want to exit application?",
"Exit Confirmation",
Alert.YES|Alert.NO,null,
alertClickHandler
);
}
public function init():void
{
. . .
this.addEventListener(Event.CLOSING,AppExit);
. . .
}