如何使flex只使用鼠标滚动和键盘事件有用,否则将其传递给浏览器?

时间:2011-02-05 10:02:23

标签: flash flex actionscript keyboard-shortcuts

这一次让我感到厌烦。当我使用鼠标滚轮在网页中向上和向下滚动,并且闪光电影进入光标的路径时,滚轮停止工作。此外,当Flash影片具有焦点时,您无法使用浏览器快捷键,例如 Ctrl + L Ctrl + R

我现在正在编写一个flex应用程序,我想找到一个解决方案,这样至少我的用户不会受到这种用户界面行为不一致的困扰。

我认为有一种方法可以告诉flash将鼠标滚轮和键盘输入等事件传播回浏览器,除非它们出现在它们有用的元素中,例如在flex textarea中。我找不到任何解决方案,甚至没有人在谈论它。

具体来说,我该如何做到:

  • 当用户使用鼠标滚动时,除非鼠标位于带滚动条的Flex容器或其他想要滚动的组件上,否则浏览器会滚动。
  • 当用户按下键盘上的按钮或按钮组合时,除非有活动的键盘监听器,或者光标位于文本字段等,否则它将传播到浏览器。

3 个答案:

答案 0 :(得分:3)

浏览器和闪存之间的通信是通过ExternalInterface完成的。 ExternalInterface允许您从JavaScript调用ActionScript方法,反之亦然。

祝你好运,因为经验表明处理键盘快捷键和浏览器不稳定往往很痛苦

答案 1 :(得分:3)

我遇到了同样的问题。但是,如果你已经在flex中构建了一个复杂的UI,那么我选择的解决方案需要进行大量的更改。

使用HTML创建用户界面,并通过javascript与隐藏的flex(或flash)对象进行通信。

例如,将要在flex textarea中显示的任何字符串作为ExternalInterface调用中的参数传递。然后在常规<textarea> html标记中显示该字符串。

此策略适用于我的项目

答案 2 :(得分:0)

添加一个事件,当你在闪光灯内部时,如果你在闪光灯里面就会处理这个事件。外部界面禁用滚动并获得专注于闪光灯。

当你走出闪光灯时,你仍然可以触发事件,仍然可以调用外部界面来聚焦浏览器并停止闪光滚动。