0

ctrl + z、ctrl + y を介して実行される元に戻す/やり直しを備えた TextArea があります。私のアプリは、ソフト キーボードに cntrl がないモバイル アプリなので、キープレスをシミュレートする元に戻すボタンとやり直しボタンを作成したいと考えています。Flex でキーをどのようにシミュレートしますか?

4

1 に答える 1

1

ctrl-z (キーコード 26) と ctrl-y (キーコード 25) をシミュレートする KeyboardEvent をディスパッチするには、KeyboardEvents を含む任意のイベントをディスパッチできます。次のようにします。

<?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 ) );2 つの引数はバブルでキャンセル可能で、charCode と keyCode の両方で 26、keyLocation で 0、最後に ctrlKey で true (ダウンしていることをシミュレートするため) です。 .

于 2012-03-02T01:09:30.410 に答える