Cambiare cursore in Flex, buttonMode la soluzione migliore

Flex oscar Commenta l'articolo

Per cambiare cursore in Flex è sufficiente appoggiarsi alla classe CursorManager, la quale ha diversi metodi statici che permettono di gestire i cursori. Di default permette di sostituire il cursore con un busyCursor o con un handCursor, rispettivamente per comunicare all’utente che c’è un’attesa o un bottone da premere. Il classico cambia puntatore in una pagina HTML quando questo passa sopra un link e da puntatore freccia diventa puntatore mano chiusa con indice alzato.

CursorManager mette a disposizione anche il metodo setCursor che permette di definire un cursore ad hoc, ovviamente va poi gestito nel modo migliore in quanto creare un nuovo cursore prevede la creazione di questo su una lista di cursori precedentemente creati, cioè mette il nuovo cursore sempre in testa ad una pila di cursori che anche se non visibili sono comunque presenti nella lista dei cursori creati. Cioè quando setto un cursore esso viene visualizzato, mentre quello precedente viene nascosto, ma questo non vuol dire che viene rimosso. Il precedente cursore non si vede più, si vede quello settano successivamente, ma esso è sempre presente nella lista, quindi quando rimuovo il secondo cursore creato allora sarà visualizzato quello precedentemente settato.
CursorManager.setCursor restituisce un valore che rappresenta l’id unico del cursore creato, questo permette di rimuovere esattamente quel cursore. Quindi è possibile rimuovere anche un cursore non in vista. Un semplice caso è quando vogliamo avere per la nostra applicazione un cursore, per esempio una mano aperta di colore verde, e poi quando il puntatore passa su un bottone vogliamo che il cursore sia una mano con indice alzato di colore giallo. Ebbene entrambi i cursori sono ad hoc e bisogna visualizzare o nascondere il cursore specifico e questo è possibile gestendo nella maniera appropriata i metodi setCursor e removeCursor, prendendo e passando come parametro, rispettivamente, l’id del cursore ad hoc.
CursorManager permette anche di cancellare con un solo colpo tutti i cursori creati con l’apposito metodo: removeAllCursors. Però questo metodo nell’esempio precedente è inutilizzabile, perché dopo l’esecuzione di questo metodo non avremmo più nessun nostro cursore ma la classica freccia. Ecco perché sottolineo la necessita di usare correttamente i metodi di creazione e cancellazione cursore.
Nel caso dobbiate utilizzare solo un cursore busy(attesa) o un cursore hand(manina) che non richiedono una grafica particolare vi consiglio di usare quelli di default e non crearne di propri uguali a quello di default in quanto essi sono gestiti sicuramente meglio ad un livello più basso di codice e quindi con prestazioni migliori. I cursori busyCursor e handCursor non sono visibili nella lista dei cursori infatti sono gestiti proprio dal player ecco perché sono più performanti.
In questo ultimo caso faccio notare che per settare su un componente un handCursor bisogna stare attenti al tipo di componente perché non in tutti i casi settare le proprietà buttonMode e useHandCursor è sufficiente.
Di seguito un piccolo specchietto di come e dove utilizzare anche la proprietà “mouseChildren” per ottenere l’attesa manina nel componente scelto per questo scopo. Infatti se non viene settato a false la proprietà mouseChildren allora la manina non comparirà sul componente.

<mx:Label buttonMode="true" text="testing here" useHandCursor="true" mouseChildren="false" />
<mx:Image source="someimage.gif" buttonMode="true"/>
<mx:Button label="Button" buttonMode="true" />
<mx:Text text="testing again" buttonMode="true" useHandCursor="true" mouseChildren="false" />

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi