2014-11-24 93 views
3

我想捕获每个鼠标事件,并尝试将事件侦听器添加到FlexGlobals.topLevelApplication。但是,当点击未被捕获时,有些情况(如Flex的Menu类)可能在事件传播停止的某个地方。例如在SystemManager.as我发现这个:Flex捕获应用程序上的所有鼠标单击

addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, true, 1000); 

...这似乎覆盖我的听众。另外我试图添加优先级为int.MAX_VALUE的Listeners,但没有成功。

所以我的问题是 - 如何捕获所有的鼠标点击,而不用担心我的事件被停止在某个地方?也许一些JavaScript黑客?或者,也许可以将事件侦听器添加到没有机会被取消的地方。谢谢。

回答

1

你可以尝试添加事件处理程序捕捉到舞台:

systemManager.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, true, Integer.MAX_VALUE); 
+0

我已经试过了。看起来这些事件是在某个地方被捕获然后重新调度的,这就是为什么它不起作用。我尝试将处理程序附加到systemManager,systemManager.stage,有没有优先级和捕获,似乎什么也没有办法。 – 2014-11-25 07:07:29

+0

这可能与将焦点留在从“显示列表”中删除的元素上有关。我发现这个[link](http://www.actionscript.org/resources/articles/900/1/Keyboard-events-on-stage-are-not-working-why/Page1.html),它描述了类似的功能键盘事件处理: – kjokinen 2014-11-25 08:02:57

+0

没有,没有帮助。仍然无法捕捉所有事件。我正在寻找更一般的解决方案,而不是一个一个地处理所有情况 - 我只是以菜单为例。 – 2014-11-25 09:22:56