闪存:在全屏模式下使用鼠标滚轮事件(Windows和Mac)

9
尽管Flash有一个鼠标滚轮事件(MouseEvent.MOUSE_WHEEL),但它存在许多问题。
首先,该事件尚未在Mac上得到支持。因此,有许多solutions,所有这些解决方案(基本上)都捕获javascript中的鼠标滚轮(或DOMMouseScroll)事件,并将其传递到flash应用程序中。幸运的是,在我测试的所有Mac浏览器下,当Flash处于全屏模式时,这也可以正常工作。
问题2是Flash忽略小“delta”的鼠标滚轮事件。例如,Microsoft的IntelliPoint Mice with "Smooth Scroll"会导致这个问题。解决方法与mac相同...即在浏览器中捕获javascript鼠标滚轮事件并将其传递给应用程序。问题是,在我测试的windows浏览器(firefox,ie,safari和chrome)中,当flash处于全屏模式时,它们似乎无法捕获此事件。有人知道为什么或如何解决吗?
我目前有一个混合解决方案,它始终从javascript中获取事件(在非全屏或全屏模式下),除非它在Windows上处于全屏模式(此时从flash鼠标滚轮事件获取)。因此,它失败的唯一时间是在Windows上的全屏模式中使用具有小delta的鼠标。有人有完整的解决方案吗?或者只是一个更好的解决方案?
5个回答

3

这是Adobe的JIRA上已知的问题。你需要等待他们修复它,或者使用另一个事件替代MouseEvent.MOUSE_WHEEL。在Windows上无法工作,因为Flash播放器的实现与Mac和Linux完全不同。Mac和Linux使用GTK来实现插件处理程序。而在Windows上,它使用Win32API Common HWND,在全屏模式下窃取焦点,导致浏览器无法分派滚动事件。在Mac和Linux上,GTK只是将插件大小拉伸到桌面大小,并没有真正的全屏。这是这些系统中的GTK行为。无可奈何。


0

自Gala beta和10.1正式版以来,MouseEvent.MOUSE_WHEEL在Mac上似乎运行良好。我可以在Safari和Chrome中使用魔术鼠标和触控板触发鼠标滚轮事件。


0

0

Pixelbreaker's MacMouseWheel 已经成功地让我在 Mac 上全屏滚动,但我已经有一段时间没有使用它了(例如在 Safari 5 上)。

缺点是它捕获整个页面的事件,因此即使 Flash 元素只是屏幕上的一个小框,您也将失去 HTML 的滚动。

但是,当您启用全屏时,您可以在已构建的内容和他在 macmousewheel.js 中使用的内容之间切换。

希望这有所帮助,祝你好运。


0

你的解决方案是最好的之一。只有一个更好 - 不要使用鼠标滚轮 :(

Adobe应该对此进行改进(以及对其他控制器的支持)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接