Вопрос

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

Это было полезно?

Решение

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

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

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

Итак, в вашем подклассе 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 из меток, когда слайдер удаляется со сцены.Это не проблема, если вы не собираетесь удалять ползунок, но если да, то обычно я создаю метод под названием dispose и поместил туда всю свою логику ручного удаления (удаление прослушивателей событий, отключение/удаление ChangeWatchers).Затем я назначаю прослушиватель компоненту REMOVED_FROM_STAGE мероприятие и позвоните dispose метод от этого слушателя.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top