Как сделать ярлыки слайдера кликабельными [Flex 3] - PullRequest
1 голос
/ 15 мая 2009

У меня простой слайдер, всего 3 варианта. Кажется странным заставлять пользователя перетаскивать небольшую миниатюру на ползунке, когда было бы намного проще щелкнуть одну из трех актуальных меток рядом с ползунком. Кто-нибудь знает, как этого добиться?

Ответы [ 2 ]

1 голос
/ 17 июня 2009

Это крутая проблема.

Объект Label, используемый Slider, оказывается подклассом Label (называемым SliderLabel). Поэтому, вероятно, наилучшим подходом было бы создать подкласс Slider и добавить прослушиватели событий для меток.

Я думаю, вы могли бы успешно добавить прослушиватели событий в методе commitProperties или методе updateDisplayList. Я не уверен, что один из них предпочтительнее другого, но commitProperties выглядит как more правильный выбор.

Итак, в вашем подклассе Slider:

override protected function commitProperties():void
{
    super.commitProperties();

    for(var i:int = 0; i < labelObjects.numChildren; i++)
    {
        if(!SliderLabel(labelObjects.getChildAt(i)).hasEventListener(MouseEvent.CLICK))
        {
            SliderLabel(labelObjects.getChildAt(i)).addEventListener(MouseEvent.CLICK,sliderLabelClickListener);
        }
    }
}

а потом может быть что-то подобное для sliderLabelClickListener:

private function sliderLabelClickListener(e:MouseEvent):void
{
    dispatchEvent( new SliderLabelClickEvent(e.target) );
}

Я думаю, что вам нужно настраивать событие там, а не отправлять обычное Event, чтобы вы могли включить имя / идентификатор / значение метки.

Кроме того, вы можете захотеть добавить метод dispose для удаления слушателя события CLICK из меток, когда Slider удален со сцены. Это не проблема, если вы не собираетесь удалять Slider, но если вы это делаете, я обычно создаю метод с именем dispose и помещаю туда всю мою логику удаления вручную (удаление прослушивателей событий, удаление / удаление ChangeWatchers ). Затем я назначаю слушателя событию REMOVED_FROM_STAGE компонента и вызываю метод dispose из этого слушателя.

0 голосов
/ 16 мая 2009

Вы уверены, что слайдер - лучший компонент для использования в этом случае? Вообще говоря, ползунки должны использоваться, когда у пользователя есть большой выбор смежных опций, где точность выбора пользователя не имеет большого значения (например, ползунок громкости - с объемом 51%, а не 50%). действительно не будет иметь большого значения).

Если у вас есть только три варианта, и пользователю разрешено выбрать только один из этих трех вариантов, я бы предложил использовать поле со списком или группу переключателей.

...