在VBox上未触发Flex鼠标滚轮事件

时间:2011-05-24 21:21:47

标签: flex flex3

我遇到了VBox鼠标滚轮滚动的问题。当鼠标悬停在VBox或垂直滚动​​条中的任何组件上时,它可以正常工作,但当鼠标位于VBox的背景上时不会发生滚动。

<mx:VBox width="100%" height="150">
   <s:Label text="A large label." height="100" />
   <s:Label text="A label." />
   <s:Label text="A label." />
   <s:Label text="A label." />
   <s:Label text="A label." />
   <s:Label text="A large label." height="100" />
   <s:Label text="A label." />
   <s:Label text="A label." />
   <s:Label text="A label." />
   <s:Label text="A label." />
</mx:VBox>

我查看了VBox和Container(VBox继承的代码)的代码。当存在垂直滚动条时,Container会将MouseEvent.MOUSE_WHEEL侦听器添加到自身。我在这个函数中放了一个断点,但只有当我的鼠标在子组件上时才会调用它。

作为最后的努力,我尝试设置了mouseEnabled,focusEnabled和一些其他随机属性,但没有一个帮助。

有没有人知道如何使VBox正确行动并在我的鼠标位于任何地方时滚动?提前谢谢。

(由于不必要的捕捉行为,暂时不能切换到火花滚轮。)

2 个答案:

答案 0 :(得分:2)

你的问题 - 你可能已经猜到了 - MouseEvents没有被触发。我怀疑与FocusEvents存在的问题相同。集装箱不会自行发送这些事件;他们只会从孩子身上冒出一些事件;它接受鼠标和焦点事件。

作为一种解决方法,您可以尝试将透明图像作为组件的第一个子项添加。背景仍将显示,但图像应该拾取相关事件并将它们冒泡到容器中。

答案 1 :(得分:0)

一年前我们遇到了类似的问题,鼠标滚轮滚动在TabNavigator上无效。找到解决方法:  https://bugs.adobe.com/jira/browse/FP-289 和  https://bugzilla.mozilla.org/show_bug.cgi?id=448567

解决方案非常简单:在flash启动HTML中删除以下行:

"wmode", "transparent", 
相关问题