从 AS3 Air 应用程序的上下文菜单中捕获粘贴选项

Capturing the Paste option from the context menu in AS3 Air Application

这是我正在尝试做的事情:

  1. 用户右键单击文本字段,系统菜单显示 "cut,copy,paste,delete,Select All" 选项(只有 "Paste" 和 "Select all" 处于活动状态)

  2. 用户点击 "paste"

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

我的问题是能够在用户从上下文菜单中选择 "paste" 选项后 运行 立即 编码 。我试过听文本字段的变化,eventchange,但无济于事。这是我正在使用的代码。发生上述情况时,不会触发以下代码。 "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");
    }

让我烦恼的是事件出于某种原因没有触发

一个TextField is an InteractiveObject, which has a paste event. You can listen for it with the flash.events.Event.PASTE常数。

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

你可以试试:

  1. textInput事件。
  2. pastechangetextInput 事件具有 TextInput 组件而不是 TextField
  3. pastechangetextInput 事件具有 TextArea 组件而不是 TextField