使用鼠标滚轮的 Flex 列表滚动速度 [英] Flex List Scroll Speed With Mouse Wheel

查看:33
本文介绍了使用鼠标滚轮的 Flex 列表滚动速度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自定义类,它扩展了我用作容器的 List.但是,鼠标滚轮的滚动速度太快,因为即使您只稍微移动滚轮,它也会滚动负载.我尝试在我的 MouseEvent.MOUSE_WHEEL 列表中添加一个事件侦听器并设置 event.delta 的值,但这没有效果.有谁知道我怎样才能让它变慢?

I have a custom class that extends List which I am using as a container. However, the scroll speed is too fast on the mouse wheel, as in it scrolls loads even if you only move the wheel a tiny bit. I tried adding an event listener to my list for MouseEvent.MOUSE_WHEEL and setting the value of event.delta but this has had no effect. Does anyone know how I can make it slower?

我的自定义类没什么特别的,我只是创建了它,所以我可以为不同的项目类型使用不同的 itemRenders.它看起来像:

My custom class is nothing special, I just created it so I could have a different itemRenders for different item types. It looks like:

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.此示例将四分之一的增量,显着降低速度:

The List class has a mouseWheelHandler function that you can override. Just override the function, update the delta property of the mouseevent, and call super. This example will quarter the delta, reducing the speed substantially:

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);
    }

  }
}

但是,在许多情况下,滚动速度/增量会受到系统偏好的影响,因此这样做可能会导致某些用户出现意外行为.添加处理程序和更新增量失败的原因是此时 mouseWheelHandler 已经被调用.

However, in many cases the scroll speed / delta will be driven off of a system preference, so doing this may cause unexpected behavior for some users. The reason that adding the handler and updating the delta failed to work is that by that point mouseWheelHandler had already been called.

这篇关于使用鼠标滚轮的 Flex 列表滚动速度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆