2009-10-15 51 views
9

儘管Flash有鼠標滾輪事件(MouseEvent.MOUSE_WHEEL),但它帶有很多問題。Flash:在全屏模式下使用鼠標滾輪事件(Windows和Mac)

第一個事件尚未在Mac上支持。所以有一堆solutions,所有這些(基本上)捕捉JavaScript中的mousewheel(或DOMMouseScroll)事件並將其傳遞到Flash應用程序。幸運的是,在我測試的所有Mac瀏覽器下,當閃光燈處於全屏模式時,這也可以使用。

問題2是Flash忽略具有小「增量」的鼠標滾輪事件。例如,微軟的IntelliPoint Mice with "Smooth Scroll"會導致這個問題。對此的解決方案與mac的解決方案相同...即在瀏覽器中捕獲javascript鼠標滾輪事件並將其傳遞給應用程序。問題在於我測試的窗口中的瀏覽器(firefox,即safari和chrome),當Flash處於全屏模式時,它們似乎無法捕獲此事件。有誰知道爲什麼或如何解決這個問題?

我目前有一個混合解決方案,除了在Windows上以全屏模式(在這一點上,它從閃光鼠標滾輪事件中獲取它們)時,它總是從JavaScript(非全屏或全屏模式)獲取事件。因此,唯一一次失敗的情況是在Windows上以全屏模式使用帶有小增量的鼠標。任何人有完整的解決方案?或者只是一個更好的?

回答

3

這是Adobe公司JIRA的一個知識問題。您需要等待修復它,或者使用另一個事件MouseEvent.MOUSE_WHEEL。它不適用於Windows,因爲Flash Player的實現在Mac和Linux的窗口中完全不同。 Mac和Linux使用GTK來實現插件句柄。在Windows上,它使用Win32API Common HWND,它專注於全屏模式,導致在瀏覽器上不調度滾動事件。在Mac和Linux上,GTK只是將插件大小擴展到桌面大小,並且不要做一個真正的全屏。這是這些系統中的GTK行爲。什麼都不能做。

0

您的解決方案是最好的之一。只有一個是更好 - 不使用鼠標滾輪:(

的Adobe應該與它(並與其他控制器的支持)做一些

0

MouseEvent.MOUSE_WHEEL似乎因爲盛大公測和10.1在Mac上工作得很好。最終,我可以在Safari和Chrome中使用神奇的鼠標和觸控板觸發鼠標滾輪事件

0

Pixelbreaker's MacMouseWheel已經給我成功的mac上全屏滾動,但我沒有在一段時間內使用它(在Safari 5上例如)

不足之處在於它捕獲整個頁面的事件,所以你會即使flash元素只是屏幕上的一個小框,也會失去HTML的滾動效果。

但是,您可以基本上在已經創建的內容和當您啓用全屏後在macmousewheel.js中使用的內容之間進行切換。

希望有幫助,祝你好運。