Apache flex 如何获取鼠标和键盘事件,由PopUpManager屏蔽

Apache flex 如何获取鼠标和键盘事件,由PopUpManager屏蔽,apache-flex,flex4,Apache Flex,Flex4,我正在实现一个应用程序超时功能(flex4)。我发现的是鼠标和键盘事件,我听过: FlexGlobals.topLevelApplication.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity); FlexGlobals.topLevelApplication.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity); 正在被任何弹出窗口的存在所掩盖。代码在组件中,

我正在实现一个应用程序超时功能(flex4)。我发现的是鼠标和键盘事件,我听过:

FlexGlobals.topLevelApplication.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity);
FlexGlobals.topLevelApplication.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity);
正在被任何弹出窗口的存在所掩盖。代码在组件中,在构造函数中。组件将添加到块中的主应用程序中

如何使这些系统生成的事件不被PopUpManager显示对象停止

谢谢

尝试在而不是topLevelApplication上侦听。使用TopLevel应用程序上的访问舞台

我认为topLevelApplication正式返回一个对象,因此您需要执行以下操作:

(FlexGlobals.topLevelApplication as Application).stage.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity);
(FlexGlobals.topLevelApplication as Application).stage.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity);

更新:

请记住,在触发该组件的creationComplete事件之前,不会在topLevelApplication中设置该阶段。如果将事件侦听器添加到非UI类中的阶段;您必须确保在topLevelApplication中激发creationComplete之前不会执行此操作

为此,在构造函数中向topLevelApplication的creationComplete方法添加一个事件侦听器

(FlexGlobals.topLevelApplication.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationCompete);
如果这是一个MXML UIComponent,您可以在预初始化事件处理程序而不是构造函数中添加该代码

(FlexGlobals.topLevelApplication.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationCompete);
然后这将是创建完成处理程序:

public function onCreationComplete(event:FlexEvent):void{
    (FlexGlobals.topLevelApplication as Application).stage.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity);
    (FlexGlobals.topLevelApplication as Application).stage.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity);
}
尝试在而不是topLevelApplication上侦听。使用TopLevel应用程序上的访问舞台

我认为topLevelApplication正式返回一个对象,因此您需要执行以下操作:

(FlexGlobals.topLevelApplication as Application).stage.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity);
(FlexGlobals.topLevelApplication as Application).stage.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity);

更新:

请记住,在触发该组件的creationComplete事件之前,不会在topLevelApplication中设置该阶段。如果将事件侦听器添加到非UI类中的阶段;您必须确保在topLevelApplication中激发creationComplete之前不会执行此操作

为此,在构造函数中向topLevelApplication的creationComplete方法添加一个事件侦听器

(FlexGlobals.topLevelApplication.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationCompete);
如果这是一个MXML UIComponent,您可以在预初始化事件处理程序而不是构造函数中添加该代码

(FlexGlobals.topLevelApplication.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationCompete);
然后这将是创建完成处理程序:

public function onCreationComplete(event:FlexEvent):void{
    (FlexGlobals.topLevelApplication as Application).stage.addEventListener(MouseEvent.MOUSE_MOVE, resetLastActivity);
    (FlexGlobals.topLevelApplication as Application).stage.addEventListener(KeyboardEvent.KEY_DOWN, resetLastActivity);
}

这项工作更加优雅,不会影响创作完成

FlexGlobals.topLevelApplication.systemManager.addEventListener(MouseEvent.MOUSE_MOVE, resetSessionTimer);
FlexGlobals.topLevelApplication.systemManager.addEventListener(KeyboardEvent.KEY_DOWN, resetSessionTimer);

这项工作更加优雅,不会影响创作完成

FlexGlobals.topLevelApplication.systemManager.addEventListener(MouseEvent.MOUSE_MOVE, resetSessionTimer);
FlexGlobals.topLevelApplication.systemManager.addEventListener(KeyboardEvent.KEY_DOWN, resetSessionTimer);

1120:访问未定义的属性应用程序-阶段只是添加.stage,而不执行“强制转换”也不起作用……它会编译,但运行时会崩溃。@reidLinden何时添加侦听器?在执行creationComplete之前不会定义阶段。我的代码位于组件中的构造函数中。组件将添加到中的主应用程序block@reidLinden您必须在添加这些事件侦听器的位置进行返工。如果它是UIComponent,则在creationComplete处理程序(而不是构造函数)中添加这些事件侦听器。若否,;然后侦听topLevelApplication的creationComplete事件,并在该处理程序中添加阶段事件侦听器。Flextras…为什么不添加另一个带有该建议的答案…它工作得很好,但我不想选择此线程作为答案。1120:未定义属性应用程序的访问-阶段只是添加.stage,而不执行“强制转换”也不起作用……它会编译,但运行时会崩溃。@reidLinden何时添加侦听器?在执行creationComplete之前不会定义阶段。我的代码位于组件中的构造函数中。组件将添加到中的主应用程序block@reidLinden您必须在添加这些事件侦听器的位置进行返工。如果它是UIComponent,则在creationComplete处理程序(而不是构造函数)中添加这些事件侦听器。若否,;然后听topLevelApplication的creationComplete事件,并在该处理程序中添加阶段事件侦听器。Flextras…为什么不添加另一个带有该建议的答案…它工作得很好,但我不想选择此线程作为答案。这也是我面临的问题。目前,我正在跟踪集合中的所有弹出窗口,并在其上添加eventlisteners以等待超时。这也是我面临的问题。目前,我正在跟踪集合中的所有弹出窗口,并在其上添加eventlisteners以等待超时。