Flex Spark列表鼠标滚轮滚动速度

7
我有一个扩展了Spark List的组件,当我使用鼠标滚轮滚动时,它一次滚动太多了。我尝试查找List类和VerticalLayout类中处理鼠标滚轮滚动的处理程序进行覆盖,但是我找不到它。
是否有其他方法可以更改这个问题,或者我错过了什么?

如果你的问题只是鼠标滚轮:我也有同样的问题,但仍然没有解决 :( http://stackoverflow.com/questions/3584127/scrolling-interval-in-a-spark-list-with-tilelayout-oversized-while-using-mouse-wh - hering
是的,这只是鼠标滚轮滚动,它移动的距离是普通滚动的3倍,因此看起来不一致。否则就没问题了...使用mx列表,我可以覆盖受保护的函数mouseWheelHandler()来改变速度,所以我认为在spark列表中也会有类似的东西... - Heather Roberts
2个回答

11

鼠标滚轮事件的"delta"属性定义了每次滚动多少行。您可以尝试在MOUSE_WHEEL处理程序(捕获阶段)中更改它。例如,以下代码将逐行滚动:

<code>        protected function init(event:FlexEvent):void
        {
            list.addEventListener(MouseEvent.MOUSE_WHEEL, list_mouseWheelHandler, true);
        }

        protected function list_mouseWheelHandler(event:MouseEvent):void
        {
            event.delta = event.delta > 0 ? 1 : -1;
        }
</code>


我已经尝试过了,但处理程序被调用得太晚了,所以对滚动没有影响,不过还是谢谢 :) 我想知道的是,当列表听到MouseEvent.MOUSE_WHEEL时,要覆盖哪个函数。 - Heather Roberts
1
您已添加了捕获设置为false的处理程序。如果添加了捕获设置为true的处理程序->它将被更早地调用。这将解决您的问题,您无需覆盖任何内容。至于处理程序:请检查VScrollBar->mouseWheelHandler(但是,老实说,您不需要覆盖它)。再次尝试按照上面的示例精确订阅MOUSE_WHEEL事件。 - Maria Sakharova
谢谢!那真的解决了问题,很抱歉昨天我没有注意到。真相被隐藏在屏幕之外,所以我以为是我已经尝试过的...非常感谢 :) - Heather Roberts
我应该在哪个组件上捕获鼠标事件? - Florian F

0

"horizontalLineScrollSize"和"verticalLineScrollSize"属性确定当用户选择滚动条箭头时要滚动多少像素。 "verticalLineScrollSize"属性还控制使用"鼠标滚轮"时的滚动量。默认值为5个像素。 "horizontalPageScrollSize"和"verticalPageScrollSize"属性确定当用户选择"滚动条轨道"时要滚动多少像素。默认值为20个像素。

更多细节:http://livedocs.adobe.com/flex/3/html/help.html?content=containers_intro_4.html


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