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

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

问题描述

我有一个扩展,我现在用的容器列表的自定义类。然而,滚动速度是鼠标滚轮太快,因为在它滚动负载,即使你只将车轮一点点。我尝试添加一个事件监听器,以我对MouseEvent.MOUSE_WHEEL列表和设置event.delta的价值,但是这并没有影响。有谁知道我可以把它慢?

我的自定义类是没有什么特别的,我刚刚创建它,所以我可以有一个不同的itemRenders针对不同的项目类型。它看起来像:

 公共类MultipleRenderersList扩展列表
{
    重写公共职能createItemRenderer(数据:对象):IListItemRenderer
    {
        如果(数据IRenderable)
        {
             返回data.getDiaryRenderer();
        }
        否则,如果(数据阵列)
        {
             如果(data.length大于0)
             {
                  如果(数据[0]是IRenderable)
                  {
                       返回数据[0] .getDiaryRenderer(数据);
                  }
             }
        }
        返回null;
    }
}
 

解决方案

List类有一个mouseWheelHandler功能,您可以覆盖。只需重写功能,更新的MouseEvent三角洲财产,并调用超。这个例子将季度增量,减少速度显着:

 包
{
  进口对象类型:flash.events.Event;
  进口flash.events.MouseEvent;

  进口mx.controls.Alert;
  进口mx.controls.List;

  公共类MYLIST扩展列表
  {

    覆盖保护功能mouseWheelHandler(事件:MouseEvent)方法:无效{
      event.delta = event.delta/4;
      super.mouseWheelHandler(事件);
    }

  }
}
 

然而,在许多情况下,滚动速度/增量将被驱除的系统preference,这样做可能会导致对某些用户意外行为。究其原因,添加处理程序和更新三角洲未能奏效的是,通过这一点mouseWheelHandler已经调用。

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?

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

解决方案

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

  }
}

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天全站免登陆