从AS3 Air Application中的上下文菜单中捕获“粘贴”选项

时间:2017-11-16 16:24:39

标签: actionscript-3 air paste

以下是我要做的事情:

  1. 用户右键单击文本字段,系统菜单显示"剪切,复制,粘贴,删除,全选"出现(只有"粘贴""全选"有效)

  2. 用户点击"粘贴"

  3. 粘贴的文本将添加到文本字段中。

  4. 我的问题是能够在用户选择"粘贴"之后立即运行代码来自contextmenu的选项。我试着听文本域更改,事件更改,但无济于事。这是我正在使用的代码。发生上述情况时,以下代码不会触发。 " d"是文本域对象

        d.addEventListener(Event.CHANGE, paste);
    
    
        private function paste(e: Event): void {
            trace("paste event fired");
            if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)) {
            trace("pasted data is ", String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT)));
            }
        }
    

    更新:

    我尝试了下面的建议,但仍然没有运气。这是我的代码。 " d"已添加到阶段

        private function start():void {
               d.addEventListener(TextEvent.PASTE, paste);
        }
        private function paste(event:TextEvent):void{
               trace("something got pasted");
        }
    

    让我烦恼的是,无论出于何种原因,事件都没有被解雇

1 个答案:

答案 0 :(得分:1)

TextFieldInteractiveObject,其中有paste个事件。您可以使用flash.events.Event.PASTE常量来监听它。

编辑:道歉,paste事件文档说它不适用于TextField。它建议使用Flash文本引擎,虽然这很困难,但我不知道如何使用它进行文本输入。

你可以尝试:

  1. textInput事件。
  2. 包含TextInput组件而不是paste的{​​{1}},changetextInput个事件。
  3. 包含TextArea组件而不是TextField的{​​{1}},pastechange个事件。