5

Flash プロジェクトにカスタム カーソルがあります。デフォルトでは、テキストフィールドにカーソルを合わせてもカスタム カーソルは表示されたままになり、I ビーム カーソルとカスタム カーソルが同時に表示されます。これを回避するには、I ビーム カーソルが表示されるたびに (つまり、マウスをテキスト フィールドの上に置いたとき)、カスタム カーソルを非表示にする必要があります。また、カーソルは常に MouseCursor.AUTO 状態に設定されます。では、I ビームに変わるタイミングをどのように検出できますか? 前もって感謝します

4

1 に答える 1

1

これは、あなたが望むものを模倣しようとするものです。ステージに単一のイベントリスナーを追加し、テキストフィールドでロールオーバー/アウトイベントが発生したかどうかを検出し、それに応じてカーソルを変更します:

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
            }
        }
    }

}
于 2013-03-03T23:23:03.987 に答える