2009-04-22 5 views
6

W środowisku Flex domyślnie po najechaniu kursorem myszy nad tekstem zmienia się kursor myszy na standardową poprzeczkę I. Jak mogę zmienić ten kursor tak, aby wyświetlał się zwykły kursor wskaźnika myszy zamiast paska I?Flex 3: Jak zmienić kursor myszy podczas przesuwania kursora nad tekstem?

zmiana: Cóż, wydaje się ten proces jest prosty brud w Flex 4 zgodnie z tym blogu: http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/

Ponieważ utknąłem z Flex 3 na razie, w jaki sposób można zrobić coś podobnego?

Update2: Również ta kwestia jest nieco podobny do tego pytania: Avoiding cursor change over dynamic text fields in Flash CS3

Chociaż używam średnia Flex Builder, nie Flash CS3.

Odpowiedz

2

Musisz użyć 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

metoda setCursor przyjmuje jednak obiekt klasy. Jak mogę znaleźć obiekt klasy dla standardowego kursora na dowolnym systemie operacyjnym, w którym znajduje się użytkownik? – DyreSchlock

+1

Jeśli chcesz korzystać z tej funkcji, musisz utworzyć obraz strzałki. Niestety, Flex 3 przekazuje zarządzanie kursorem do systemu, jeśli nie zdefiniowano kursora. To twój system wyświetla kursor I ... nie Flex. –

+1

hmmm. dziwne. W jaki sposób system wie, kiedy zmienić kursor? Czy istnieje sposób na zmianę identyfikacji pola tekstowego, aby nie mógł go zmienić? – DyreSchlock

0

Można użyć hbox z etykietą zamiast TextInput. System nie zmieni kursora, gdy mysz znajdzie się nad etykietą. Jeśli chcesz, aby tekst był edytowalny przez użytkownika, będziesz musiał wykonać więcej pracy.

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

jest też inny sposób, ustawiając buttonMode właściwość prawdziwej dla dowolnego elementu, który chcesz. przyniesie to kursor myszy zamiast kursora tekstowego.

+0

Istnieją trzy wymagane właściwości. Zobacz odpowiedź Oscara. – mwilson

7

prostu do wyjaśnienia - zajęcia MouseCursor i Mouse istnieją także w Flex 3 na lampie błyskowej 10. Możesz podłączyć się do zdarzeń MOUSE_OVER i 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

W którym pakiecie istnieją 'MouseCursor' i' Mouse'? Linki nie prowadzą już do niczego użytecznego. – Mashmagar