Domanda

Ho un semplice dispositivo di scorrimento, con solo 3 opzioni. Sembra strano per costringere l'utente a trascinare la piccola miniatura sul cursore, quando sarebbe molto più facile fare clic su uno dei 3 etichette effettivi a fianco del dispositivo di scorrimento. Qualcuno sa come eseguire questa?

È stato utile?

Soluzione

Questo è un problema fresco.

L'oggetto Label usata da cursore risulta essere una sottoclasse di etichetta (chiamato sliderLabel). Quindi, probabilmente l'approccio migliore sarebbe quello di sottoclasse Slider e aggiungere listener di eventi alle etichette.

Credo che si potrebbe aggiungere con successo listener di eventi sia il metodo commitProperties o il metodo updateDisplayList. Non sono sicuro se uno sarebbe preferibile all'altra, ma commitProperties sembra che la più scelta corretta.

Quindi, nella vostra sottoclasse di 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);
        }
    }
}

e poi forse qualcosa di simile per sliderLabelClickListener:

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

Credo che ci si vuole un evento personalizzato lì, piuttosto che l'invio di un Event regolare, così da poter comprendere il nome / id / valore del marchio.

Inoltre, si consiglia di mettere in un metodo 'dispose' per rimuovere il listener di eventi CLICCA dalle etichette Quando il cursore viene rimosso dal palco. Non è un problema se non si ha intenzione di essere la rimozione del cursore, ma se siete, quello che faccio di solito è di creare un metodo chiamato dispose e mettere tutta la mia logica rimozione manuale lì (la rimozione di listener di eventi, unwatching / rimozione ChangeWatchers ). Poi assegno un listener per REMOVED_FROM_STAGE evento del componente e chiamare il metodo <=> da quel ascoltatore.

Altri suggerimenti

Sei sicuro uno slider è il componente migliore da usare in questo caso? In generale, i cursori devono essere utilizzati quando l'utente ha una vasta gamma di opzioni contigui tra cui scegliere, in cui la precisione della scelta di un utente non ha molta importanza (ad esempio, un cursore del volume - visto il volume al 51% contro il 50% davvero non farà molta differenza).

Se avete solo tre opzioni, e l'utente è consentito solo per selezionare una di queste tre opzioni, vorrei suggerire utilizzando una casella combinata o un gruppo di pulsanti di scelta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top