Pregunta

Tengo un sencillo control deslizante, con sólo 3 opciones.Parece extraño para forzar al usuario arrastrar la miniatura en la barra, cuando sería mucho más fácil haga clic en una de las 3 etiquetas reales por el lado de la barra.¿Alguien sabe cómo lograr esto?

¿Fue útil?

Solución

Este es un genial problema.

La Etiqueta de objeto utilizado por el Regulador resulta ser una subclase de la Etiqueta (llamado SliderLabel).Así que, probablemente, el mejor enfoque sería subclase Regulador y añadir detectores de eventos a las etiquetas.

Creo que con éxito podría añadir detectores de eventos ya sea en el commitProperties método o la updateDisplayList método.No estoy seguro de si sería preferible a la otra, pero commitProperties se parece a la más la elección correcta.

Así, en la subclase de 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);
        }
    }
}

y entonces, tal vez algo como esto para sliderLabelClickListener:

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

Creo que te gustaría un evento personalizado allí, en lugar de enviar un regular Event, así que usted puede incluir el nombre/id/valor de la etiqueta.

También, usted puede poner en un 'disponer' método para eliminar el evento CLICK de escucha a partir de las etiquetas cuando el control está eliminado de la etapa.No es un problema si no se va a quitar el Regulador, pero si es así, lo que hago normalmente es crear un método llamado dispose y poner todos mis extracción manual de lógica (eliminación de detectores de eventos, unwatching/extracción de ChangeWatchers).A continuación, asigne un oyente a la del componente REMOVED_FROM_STAGE evento y llamar a la dispose método de oyente.

Otros consejos

¿Está seguro un control deslizante es el mejor componente para usar en este caso? En términos generales, los deslizadores se van a utilizar cuando el usuario tiene una gran gama de opciones contiguos a elegir, donde la precisión de la elección de un usuario en realidad no importa (por ejemplo, un control de volumen - que tiene un volumen en un 51% frente al 50% realmente no hará mucha diferencia).

Si sólo tiene tres opciones, y el usuario sólo se le permite seleccionar una de estas tres opciones, se recomienda usar ya sea un cuadro combinado o un grupo de botones de radio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top