我有空气申请。单击应用程序菜单项将打开一个本机窗口。就像在其他应用程序中一样,我希望在本机窗口打开时,应该禁用对应用程序中其他首选项的访问(如关闭应用程序等)。
我怎么能这样做?
答案 0 :(得分:2)
我不知道有什么简单的方法可以做到这一点。我能想到的最好的方法是侦听DEACTIVATE事件,阻止它,然后手动重新激活窗口。一些代码:
var args:NativeWindowInitOptions = new NativeWindowInitOptions();
var subWindow:NativeWindow = new NativeWindow(args);
subWindow.activate();
subWindow.addEventListener(Event.DEACTIVATE, onDeactivate);
private function onDeactivate(event:Event):void
{
event.preventDefault();
NativeWindow(event.target).activate();
}
这将确保此子窗口始终保持焦点,直到它关闭。
我可以在此方法与此类子窗口的典型应用程序行为之间看到两个不同之处。
1)可以拖动父窗口(由于某种原因,这不会调度DEACTIVATE事件)
2)通常子窗口应该“闪烁”并发出警告声,表示必须在进一步操作之前处理它(这至少是Windows 7上其他应用程序的行为;我是不确定其他操作系统)。
对于拖动问题,您应该能够让父窗口监听MOVING事件,并在子窗口处于活动状态时监听undefault()。
我没有看到任何好方法复制2的行为。您可以在DEACTIVATE事件中使用子窗口notifyUser(NotificationType.INFORMATIONAL)
,但这与其他应用程序不同。