我有一个自定义类,它扩展了我用作容器的List.但是,鼠标滚轮上的滚动速度太快,因为即使您仅稍微移动滚轮,它也会滚动加载.我尝试在我的列表中为MouseEvent.MOUSE_WHEEL添加一个事件监听器并设置event.delta的值,但这没有任何效果.有谁知道我怎么能让它变慢?
我的自定义类没什么特别的,我只是创建了它,所以我可以为不同的项类型设置不同的itemRenders.看起来像:
public class MultipleRenderersList extends List { override public function createItemRenderer(data:Object):IListItemRenderer { if (data is IRenderable) { return data.getDiaryRenderer(); } else if (data is Array) { if (data.length > 0) { if (data[0] is IRenderable) { return data[0].getDiaryRenderer(data); } } } return null; } }
解决方法
List类有一个mouseWheelHandler函数,您可以覆盖它.只需覆盖该函数,更新mouseevent的delta属性,然后调用super.此示例将对增量进行四分之一,从而大幅降低速度:
package { import flash.events.Event; import flash.events.MouseEvent; import mx.controls.Alert; import mx.controls.List; public class MyList extends List { override protected function mouseWheelHandler(event:MouseEvent):void { event.delta = event.delta/4; super.mouseWheelHandler(event); } } }
但是,在许多情况下,滚动速度/增量将取决于系统首选项,因此这样做可能会导致某些用户出现意外行为.添加处理程序和更新delta失败的原因是此时已经调用了mouseWheelHandler.