2011-05-24 98 views
0

我在使用VBox滚动鼠标滚轮时出现问题。当鼠标悬停在VBox或垂直滚动​​条中的任何组件上时,它可以正常工作,但当鼠标悬停在VBox背景上时不会发生滚动。VBox上未触发的Flex鼠标滚轮事件

<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> 

我看着对于垂直框和容器的代码(其垂直框继承。)集装箱添加MouseEvent.MOUSE_WHEEL侦听到自身时,垂直滚动条的存在。我在这个函数中放置了一个断点,但只有当鼠标位于子组件上时才会调用它。

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

有谁知道如何使VBox正确动作并滚动当我的鼠标在任何地方吗?提前致谢。

(切换到火花滚轮是不是现在的选择,由于不需要的捕捉行为)

回答

2

你的问题 - 你可能有guessed-是,MouseEvents没有开火。我怀疑与FocusEvents存在相同的问题。容器不会自行发送这些事件;他们只会从他们的孩子中冒出一些事件;它接受鼠标和焦点事件。

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

+0

可能的容器进行修改,以接受鼠标事件,还是有一些基本的东西,以防止这? – takteek 2011-05-24 21:47:18

+0

@takteek我认为你的意思是;可以修改一个容器来分派MouseEvents。我怀疑是肯定的;但我不知道会发生什么。你必须打开框架代码,看看你能弄清楚什么。 – JeffryHouser 2011-05-24 22:14:59

+0

我查看了一段时间的Container源代码,但没有得到任何地方。当我无法弄清楚flex是如何工作的时候,这是令人沮丧的,但在这一点上,我不认为这是值得的。我最终使用'setStyle(“backgroundColor”,0xFFFFFF);'强制它创建一个背景,然后允许滚动工作。谢谢。 – takteek 2011-05-24 23:01:19