2010-10-19 63 views
0

我记得在旧的mx上使用values数组:HSlider,有没有解决s的问题:HSlider?Force Flex 4 Spark Hslider捕捉特定值?

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

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

如果不是这个组件,那里有没有其他的皮肤滑块?!

在此先感谢!

回答

2

默认的HSlider没有这个功能。

要做到这一点,您需要创建一个扩展HSlider的类并添加此功能。

你可以看到如何扩展Flex的类此的例子:http://blog.flexexamples.com/2008/09/08/extending-the-linkbutton-control-in-flex/

+0

OMG,有时候我真的很讨厌的Adobe :(是的,我还挺有这样的未来,但希望在社区的某个地方有一些经过验证的解决方案... – 2010-10-19 21:42:13

+0

是的,Adobe表示他们的立场是添加所需的内容,而不是添加便利方法,因此不得不自己动手做这件事。祝好运找到另一种解决方案,但我的猜测是你将不得不自己写。 – 2010-10-19 21:46:09

2

扩展,并在拇指拖动或跟踪点击使用 pointToValue

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

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)}"/>