2009-10-15 1 views
9

Хотя Flash имеет событие колеса мыши (MouseEvent.MOUSE_WHEEL), в нем есть немало проблем.Вспышка: использование событий колесика мыши в полноэкранном режиме (Windows и Mac)

Во-первых, это событие еще не поддерживается на Mac. Итак, есть куча solutions, все из которых (в основном) захватывают событие mousewheel (или DOMMouseScroll) в javascript и передают его в флеш-приложение. К счастью, во всех браузерах Mac, которые я тестировал, это также работает, когда вспышка находится в полноэкранном режиме.

Проблема 2 заключается в том, что вспышка игнорирует события колесика мыши с небольшими «дельтами». Например, проблема IntelliPoint Mice with "Smooth Scroll" от Microsoft. Решением этого является то же самое, что и решение для mac ... например, захватить событие мыши на колесико мыши в браузере и передать его в приложение. Проблема в том, что в браузерах в проверенных мной окнах (firefox, т. Е. Сафари и хром) они, похоже, не захватывают это событие, когда вспышка находится в полноэкранном режиме. Кто-нибудь знает, почему и как это исправить?

В настоящее время у меня есть гибридное решение, которое всегда принимает события от javascript (в полноэкранном или полноэкранном режиме), за исключением случаев, когда он находится в полноэкранном режиме в Windows (в этот момент он берет их из события флеш-мультика). Таким образом, единственный раз, когда он терпит неудачу, - это полноэкранный режим в Windows с мышью с небольшими дельтами. У кого-нибудь есть полное решение? Или просто лучше?

ответ

3

Это проблема с информацией о JIRA adobe. Вам нужно подождать, чтобы исправить это, или использовать другое событие вместо MouseEvent.MOUSE_WHEEL. Он не работает с окнами, потому что реализация flash-плеера полностью отличается от окон от Mac и Linux. Mac и Linux используют GTK для реализации плагина Handle. В окнах он использует Win32API Common HWND, который крадет фокус на полноэкранном режиме, вызывая нераспределение событий прокрутки в браузере. На Mac и Linux GTK просто растягивает размер плагина на размер рабочего стола и не делает реального полноэкранного режима. Это поведение GTK внутри этих систем. Ничего нельзя сделать.

0

Ваше решение является одним из лучших. Только один лучше - не использовать колесо мыши :(

Adobe должны сделать что-то с ним (и с поддержкой других контроллеров)

0

MouseEvent.MOUSE_WHEEL, кажется, работает отлично на Mac, так как Гала бета и 10.1. Я могу запускать события колесика мыши, используя волшебную мышь и трек-панель в обоих Safari и Chrome.

0

Pixelbreaker's MacMouseWheel дал мне успешную полноэкранную прокрутку на Mac, но я не использовал ее через некоторое время (на Safari 5 например,

Недостатком является то, что он захватывает события для всей страницы, поэтому вы будете потерять прокрутку для HTML, даже если элемент flash - это всего лишь небольшое окно на экране.

Но вы можете в основном переключаться между тем, что вы уже создали, и тем, что он использует в macmousewheel.js, когда вы включили полноэкранный режим.

Надеюсь, что это поможет, удачи.

Смежные вопросы