Mam niestandardowy kursor w moim projekcie flash. Domyślnie niestandardowy kursor pozostaje widoczny po najechaniu kursorem na pole tekstowe i pojawi się kursor I-beam oraz własny kursor widoczny w tym samym czasie. Aby tego uniknąć, muszę ukryć swój niestandardowy kursor za każdym razem, gdy pojawi się kursor I-beam (tj. Po najechaniu myszą na pole tekstowe). Również kursor jest zawsze ustawiony na stan MouseCursor.AUTO. Więc jak mogę wykryć, kiedy zmienia się na I-beam? góry dziękiJak mogę wykryć, kiedy kursor zmienia się w I-beam w AS3?
Odpowiedz
Oto coś, co próbuje naśladować to, co chcesz, to dodaje pojedynczy detektor zdarzeń na scenie i wykrywa, czy przewrócić/out wydarzeń stało na polach tekstowych i zmienia kursor accordinly:
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.ui.Mouse;
import flash.ui.MouseCursor;
public class Main extends Sprite
{
private var textField1:TextField = new TextField();
private var textField2:TextField = new TextField();
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var loader:Loader = new Loader();
loader.load(new URLRequest('bg.png'));
addChild(loader);
textField1.text = "Text Field 1";
textField1.border = true;
textField1.x = 100;
addChild(textField1);
textField2.text = "Text Field 2";
textField2.border = true;
textField1.x = 400;
addChild(textField2);
Mouse.cursor = MouseCursor.HAND;
stage.addEventListener(MouseEvent.ROLL_OVER, onRollOver, true);
stage.addEventListener(MouseEvent.ROLL_OUT, onRollOut, true);
}
private function onRollOver(e:MouseEvent):void
{
var tf:TextField = e.target as TextField;
if (tf)
{
Mouse.cursor = MouseCursor.IBEAM;
//hide your custom cursor here
}
}
private function onRollOut(e:MouseEvent):void
{
var tf:TextField = e.target as TextField;
if (tf)
{
Mouse.cursor = MouseCursor.HAND;
//show your custom cursor here
}
}
}
}
Zdarzenia 'ROLL_ *' zdarzają się tylko raz, myślę, że szukasz zdarzeń 'MOUSE_ *'. – xLite
Wydaje mi się, że zdarzenia dotyczące rolki są w tym przypadku w porządku, zostaną wywołane, gdy kursor znajdzie się nad polem TextField, a kursor zostanie zmieniony, zostanie ponownie wywołany, gdy kursor zniknie, a kursor zostanie zmieniony z powrotem. Nie musisz ciągle ustawiać kursora na IBEAM, używając zdarzeń MOUSE_ *. –
Jestem ciekawy, czy przetestowałeś swój kod? – xLite
Niestety jestem przekonany, że nie ma żadnych zdarzeń, które śledzą stan wyświetlania kursora systemu. Możesz po prostu dodać detektory zdarzeń do samych pól tekstowych (przewijaj i rozwijaj) i zarządzaj nimi w ten sposób. – Marty