2009-04-22 6 views
6

In Flex, per impostazione predefinita, quando si passa il mouse su un input di testo, il cursore del mouse viene modificato nella barra trasversale I standard. Come posso cambiare questo cursore in modo che venga mostrato il normale cursore del puntatore del mouse anziché la croce I?Flex 3: Come posso cambiare il puntatore del mouse quando si passa il mouse su un ingresso di testo?

aggiornamento: Bene, sembra che questo processo è sporco semplice in Flex 4 secondo questo post del blog: http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/

Dato che io sono bloccato con Flex 3 per il momento, come posso fare qualcosa di simile?

Update2: Inoltre, questa domanda è in qualche modo simile a questa domanda: Avoiding cursor change over dynamic text fields in Flash CS3

Anche se, io sto usando il Flex Builder standard, non Flash CS3.

risposta

2

Devi usare il CursorManager:

import mx.managers.CursorManager; 

protected function textMouseOverHandler(event:Event):void 
{ 
    CursorManager.setCursor(yourCursor, yourPriority, xOffset, yOffset); 
    // Rest of your handler 
} 

protected function textMouseOutHandler(event:Event):void 
{ 
    // be sure to set the cursor back here 
} 
+0

tuttavia il metodo setCursor accetta un oggetto Class. Come posso trovare l'oggetto di classe per il cursore standard su qualsiasi sistema operativo in cui si trova l'utente? – DyreSchlock

+1

Dovrai creare l'immagine della freccia se desideri questa funzionalità. Sfortunatamente, Flex 3 passa la gestione del cursore al sistema se non è definito alcun cursore. È il tuo sistema che sta visualizzando il cursore I ... non Flex. –

+1

hmmm. strano. Quindi, come fa il sistema a sapere quando cambiare il cursore? C'è un modo per cambiare l'identificazione di un campo di testo in modo che non sappia cambiarlo? – DyreSchlock

0

si potrebbe usare un HBOX con un'etichetta invece di una TextInput. Il sistema non cambierà il cursore quando il mouse si trova sopra l'etichetta. Se vuoi che il testo sia modificabile dall'utente, dovrai lavorare ancora di più.

public class MyTextInput extends HBox 
{ 
public function MyTextInput() 
{ 
    super(); 
    var label:Label = new Label(); 
    label.text="some text"; 
    addChild(label); 
    addEventListener(MouseEvent.CLICK, editProperties, true); 
} 
private function editProperties(event:MouseEvent) 
{ 
    //do something to allow the user to edit the text e.g. PopupManager.createPopup 
} 
} 
-1

c'è anche un altro modo impostando buttonMode proprietà vero per qualsiasi componente che si desidera. questo porta il cursore del mouse invece del cursore del testo.

+0

Esistono tre proprietà richieste. Guarda la risposta di Oscar. – mwilson

7

Giusto per chiarire - le classi MouseCursor e Mouse esistono anche in Flex 3 su flash 10. Quindi puoi collegarti agli eventi MOUSE_OVER e MOUSE_OUT:

elem.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void { 
    Mouse.cursor = MouseCursor.BUTTON; 
}); 

elem.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void { 
    Mouse.cursor = MouseCursor.ARROW; 
}); 
+0

In quale pacchetto sono presenti 'MouseCursor' e' Mouse'? I link non portano più a nulla utile. – Mashmagar