0

我有一个带有撤消/重做的 TextArea,它是通过 ctrl+z、ctrl+y 执行的。我的应用程序是一个移动应用程序,软键盘上没有 cntrl,所以我想做一个模拟按键的撤消和重做按钮。你如何在 Flex 中模拟按键?

4

1 回答 1

1

您可以分派您喜欢的任何事件,包括 KeyboardEvents,以便分派一个模拟 ctrl-z(键码 26)和 ctrl-y(键码 25)的 KeyboardEvent,您可以执行以下操作:

<?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 事件,接下来的两个参数是气泡并且可以取消,然后 charCode 和 keyCode 为 26,keyLocation 为 0,最后为 ctrlKey 为真(模拟它被关闭) .

于 2012-03-02T01:09:30.410 回答