Принудително фиксиране на Flex 4 Spark Hslider до определени стойности?

Спомням си, че използвах масив от стойности на добрия стар mx:HSlider, има ли някакво решение за s: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" />

Ако не с този компонент, има ли някакъв алтернативен плъзгач с възможност за скиниране?!

Благодаря предварително!


person zarko.susnjar    schedule 19.10.2010    source източник


Отговори (3)


HSlider по подразбиране няма тази функционалност.

За да постигнете това, ще трябва да създадете клас, който разширява HSlider и добавя тази функционалност.

Можете да видите пример как да разширите Flex клас тук: http://blog.flexexamples.com/2008/09/08/extending-the-linkbutton-control-in-flex/

person Alan Geleynse    schedule 19.10.2010
comment
OMG, понякога наистина мразя Adobe :( Да, някак си го очаквах, но се надявах, че някъде в общността има някое доказано решение... - person zarko.susnjar; 20.10.2010
comment
Да, Adobe заяви, че тяхната позиция е да добавят само това, което е необходимо, а не да добавят удобни методи, така че трябва да го направите сами, за съжаление. Успех в намирането на друго решение, но предполагам, че ще трябва да го напишете сами. - person Alan Geleynse; 20.10.2010

Разширете и при плъзгане с палец или щракване върху проследяване използвайте pointToValue

за да намерите стойността си, както сте щракнали, и закръглете до най-близката стойност, към която искате да се прикрепи. Това е по-добро от старото прихващане, защото можете да правите страхотни неща като логаритмично прихващане (напр. прихващане до 1,10,100,1000).

person Jack Viers    schedule 15.04.2011

Ето основно решение (което лесно може да се постави в клас) за тези, които може да се нуждаят от него:

<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)}"/>
person merv    schedule 15.04.2011