2014-11-24 97 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