2011-02-05 65 views
3

這一段時間以來,我一直在吸引着我。當我使用鼠標滾輪在網頁上上下滾動,並且閃光燈電影進入光標路徑時,滾輪停止工作。此外,當Flash影片具有焦點,則無法使用瀏覽器快捷方式一樣按Ctrl +大號按Ctrl +[R如何使Flex只在鼠標滾動和鍵盤事件有用時消耗鼠標滾動和鍵盤事件,否則將它傳遞給瀏覽器?

我正在編寫一個flex應用程序,我希望找到一個解決方案,以便至少我的用戶不會受到用戶界面行爲不一致的困擾。

我應該想到,有一種方法可以告訴flash將鼠標滾輪和鍵盤輸入等事件傳播回瀏覽器,除非它們出現在它們有用的元素中,例如在flex textarea中。雖然我找不到任何解決方案,甚至任何人都不會談論它。

具體來說,我怎樣才能讓這個:

  • 當用戶用鼠標滾動,瀏覽器滾動除非鼠標懸停在滾動條柔性容器,或者想要滾動另一個組件。
  • 當用戶按下一個按鈕或鍵盤上的按鈕的組合,它會被傳播到瀏覽器,除非有一個活動的鍵盤監聽器,或光標是在文本字段中,等

回答

3

通信在瀏覽器和Flash之間通過ExternalInterface完成。 ExternalInterface允許您從JavaScript調用ActionScript方法,反之亦然。

與因爲經驗好運表明它往往不好受處理鍵盤快捷鍵和瀏覽器世態炎涼

+1

是的,這聽起來像我必須走下這樣的路線。就像創建一個橋樑一樣,您可以將事件從Flash中吸引到JavaScript中。做鼠標滾動比鍵盤事件更容易。我很驚訝沒有人創建過這樣一座橋。我想知道是否甚至有可能從JavaScript內部激發類似「Ctrl-L」的事件並讓瀏覽器撿起它? – 2011-02-07 09:08:52

+0

我也想知道。從Flash,我可以發送Ctrl + L到瀏覽器嗎?我猜測可能會將該命令「發送」到JavaScript,以便JS可以相應地執行操作,但內置瀏覽器功能又如何呢? – 2012-03-20 19:54:29

3

我面臨同樣的問題。但是如果你有一個複雜的用戶界面已經內置在flex中,我所做的解決方案需要進行大量的修改。

使用HTML創建用戶界面,並通過javascript與隱藏的flex(或flash)對象進行通信。

例如,將想要在flex textarea中顯示的任何字符串作爲ExternalInterface調用中的參數傳遞。然後在常規的<textarea> html標籤中顯示該字符串。

這一戰略已經爲我的項目

0

添加,如果你是閃存裏面,當你的閃光燈調用外部接口內禁用滾動和獲得焦點的閃光燈將要處理的事件運作良好。

當您走出閃光燈時,您仍然可以觸發該事件,仍然調用外部接口使焦點停留在瀏覽器並停止閃爍滾動。