强制Flex 4 Spark Hslider捕捉到某些值?

时间:2010-10-19 21:27:58

标签: actionscript-3 flex flex4 mxml flex-spark

我记得在旧的mx:HSlider上使用值数组,是否有针对s:HSlider的解决方法?!

基本上我需要滑块在以下步骤300,500,1000,2000,2500中选择介于300和2500之间的值。

<s:HSlider id="franchiser" 
   value="1500" 
   skinClass="components.HorizontalSlider" x="0" y="0" 
   minimum="300" maximum="2500" />

如果没有这个组件,那么还有其他可换肤滑块吗?!

提前致谢!

3 个答案:

答案 0 :(得分:2)

默认HSlider没有此功能。

要实现此目的,您需要创建一个扩展HSlider并添加此功能的类。

您可以在此处查看如何扩展Flex类的示例:http://blog.flexexamples.com/2008/09/08/extending-the-linkbutton-control-in-flex/

答案 1 :(得分:2)

延伸,并在拇指拖动或跟踪单击使用  pointToValue

找到您点击的值并舍入到您希望其捕捉到的最接近的值。这比旧的快照行为更好,因为你可以做一些很酷的事情,比如对数捕捉(例如对齐1,10,100,1000)。

答案 2 :(得分:2)

对于那些可能需要它的人来说,这是一个基本的解决方法(很容易放在一个类中):

<fx:Script>
  <![CDATA[

    import mx.collections.ArrayCollection;

    [Bindable]
    private var sliderValues:ArrayCollection =
      new ArrayCollection([300,500,1000,2000,2500]);

  ]]>
</fx:Script>
...
<s:HSlider id="sldr"
  minimum="0" maximum="{sliderValues.length - 1}"
  stepSize="1" snapInterval="1"
  dataTipFormatFunction="{
    function():String
    {
      return sliderValues[sldr.value].toString();
    }}"/>

<s:Label text="{sliderValues.getItemAt(sldr.value)}"/>