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

前端之家收集整理的这篇文章主要介绍了Flex列表滚动速度与鼠标滚轮前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自定义类,它扩展了我用作容器的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.

原文链接:https://www.f2er.com/flex/174289.html

猜你在找的Flex相关文章