Flex - кнопка для имитации нажатия клавиш - PullRequest
0 голосов
/ 02 марта 2012

У меня есть TextArea с отменой / повтором, которое выполняется с помощью Ctrl + Z, Ctrl + Y. Мое приложение представляет собой мобильное приложение без клавиш на клавиатуре, поэтому я хочу сделать отмену и кнопку повтора, которая имитирует нажатия клавиш. Как вы симулируете ключи во Flex?

1 Ответ

1 голос
/ 02 марта 2012

Вы можете отправить любое событие, которое вам нравится, включая KeyboardEvents, поэтому для отправки KeyboardEvent, имитирующего ctrl-z (код клавиши 26) и ctrl-y (код клавиши 25), вы можете сделать что-то вроде следующего:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="creationCompleteHandler(event)">
    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            protected function creationCompleteHandler(event:FlexEvent):void
            {
                this.addEventListener( KeyboardEvent.KEY_UP, keyHandler );
            }

            protected function clickHandler(event:MouseEvent):void
            {
                this.dispatchEvent( new KeyboardEvent( KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true ) );
            }

            protected function keyHandler( e:KeyboardEvent ):void
            {
                trace(e.charCode, e.keyCode, e.ctrlKey);
            }

        ]]>
    </mx:Script>
    <mx:Button id="undoButton" label="undo" click="clickHandler(event)" />
</mx:Application>

Строка this.dispatchEvent( new KeyboardEvent( KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true ) ); - это ключ (без каламбура), который говорит отправка события KEY_UP, следующие два аргумента являются пузырьками и могут быть отменены, затем 26 для charCode и keyCode, 0 для keyLocation и, наконец, true для ctrlKey ( смоделировать это вниз).

...