2009-10-15 11 views
9

Chociaż Flash ma zdarzenie "kółko myszy" (MouseEvent.MOUSE_WHEEL), ma sporo problemów.Flash: Korzystanie z zdarzeń kółka myszy w trybie pełnoekranowym (Windows i Mac)

Po pierwsze, wydarzenie nie jest jeszcze obsługiwane na komputerze Mac. Tak więc istnieje grupa solutions, z których wszystkie (w zasadzie) przechwytują zdarzenie mousewheel (lub DOMMouseScroll) w javascript i przekazują je do aplikacji flash. Na szczęście we wszystkich testowanych przeglądarkach Mac działa to również, gdy lampa błyskowa działa w trybie pełnoekranowym.

Problem 2 polega na tym, że Flash ignoruje zdarzenia kółka myszy z małymi "deltami". Na przykład ten problem występuje w przypadku oprogramowania Microsoft IntelliPoint Mice with "Smooth Scroll". Rozwiązanie tego jest takie samo jak rozwiązanie dla mac ... tj. Przechwytywanie zdarzenia kółka myszy javascript w przeglądarce i przekazywanie go do aplikacji. Problem polega na tym, że przeglądarki w testowanych oknach (firefox, safari i chrome) nie przechwytują tego zdarzenia, gdy flash działa w trybie pełnoekranowym. Czy ktoś wie, dlaczego i jak to naprawić?

Obecnie mam rozwiązanie hybrydowe, które zawsze bierze zdarzenia z javascript (w trybie innym niż pełnoekranowy lub pełnoekranowy), z wyjątkiem sytuacji, gdy jest w trybie pełnoekranowym w systemie Windows (w tym momencie zabiera je ze zdarzenia Flash Mousewheel). Tak więc jedyne, czego mu się nie uda, to tryb pełnoekranowy w systemie Windows za pomocą myszy z małymi deltami. Ktoś ma pełne rozwiązanie? A może po prostu lepszy?

Odpowiedz

3

Jest to znany problem w JIRA firmy adobe. Musisz to naprawić, lub użyj innego zdarzenia zamiast MouseEvent.MOUSE_WHEEL. Nie działa w systemie Windows, ponieważ implementacja Flash Playera jest zupełnie inna w oknach z Mac i Linux. Mac i Linux używają GTK do implementacji wtyczki. W systemie Windows używa on Win32API Common HWND, który kradnie fokus na trybie pełnoekranowym, powodując brak wywoływania zdarzeń przewijania w przeglądarce. Na komputerach Mac i Linux GTK wystarczy rozciągnąć rozmiar wtyczki na rozmiar pulpitu i nie wyświetlaj pełnego ekranu. Jest to zachowanie GTK w tych systemach. Nic nie można zrobić.

0

Twoje rozwiązanie jest jednym z najlepszych. Tylko jeden jest lepszy - nie używać kółka myszy :(

Adobe powinien coś z tym zrobić (a ze wsparciem dla innych sterowników)

0

MouseEvent.MOUSE_WHEEL wydaje się działać prawidłowo na mac od Gala beta i 10.1. Ostatecznie mogę uruchamiać zdarzenia kółka myszy za pomocą magicznej myszy i trackpad w przeglądarce Safari i Chrome.

0

Pixelbreaker's MacMouseWheel dała mi pomyślne przewijanie pełnoekranowe na komputerze Mac, ale nie korzystałem z niego przez jakiś czas (w Safari 5 na przykład)

Wadą jest to, że przechwytuje zdarzenia dla całej strony, więc będziesz tracę przewijanie kodu HTML, nawet jeśli element flash to tylko małe okienko na ekranie.

Ale możesz w zasadzie przełączać się między tym, co już zbudowałeś, a tym, czego używa on w macmousewheel.js po włączeniu pełnego ekranu.

Nadzieję, że pomaga, powodzenia.

Powiązane problemy