Принудительно привязать Flex 4 Spark Hslider к определенным значениям? - PullRequest
0 голосов
/ 20 октября 2010

Я помню, как использовал массив значений на старом добром 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" />

Если нет с этим компонентом, есть ли какой-нибудь альтернативный слайдер с возможностью скинов? *

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Расширение, и при перетаскивании большого пальца или щелчке трека используйте pointToValue

, чтобы найти свое значение по нажатию и округлить до ближайшего значения, к которому вы хотите привязать.Это лучше, чем прежнее поведение привязки, потому что вы можете делать некоторые классные вещи, такие как логарифмическое привязывание (например, привязка к 1,10 100,1000).

2 голосов
/ 16 апреля 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)}"/>
2 голосов
/ 20 октября 2010

HSlider по умолчанию не имеет этой функции.

Для этого вам нужно создать класс, расширяющий HSlider и добавляющий эту функцию.

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

...