剪贴板更改时的 AS3 AIR addEventListener

AS3 AIR addEventListener on Clipboard change

我有代码:

import flash.desktop.Clipboard; 
import flash.desktop.ClipboardFormats; 

if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){ 
    var text:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT); 
} 

只有在我手动检查剪贴板时才有效。 addEventListenerClipboard.generalClipboard 上有什么方法可以捕捉到它被用户更改了吗?

不,Flash/Air 中不存在用于 OS 剪贴板更改的现有事件(据我所知)

有用于此的本机 OS API 当然,您可以编写一个 ANE 来挂钩本机事件并引发一个 ActionScript 事件,但是您需要为每个 OS您的 Air 应用程序将 运行 开启。

您可以 轮询 计时器事件上的剪贴板(我看到它完成了),抓取内容并将其与上次轮询时进行比较,但这确实是肮脏的 做事方式并取决于用户最后粘贴到剪贴板的内容,您最终可能会检索到一些需要以某种形式散列的非常大的对象(sha/md5) 以确定下一次情况是否发生变化...大量无用的处理和垃圾收集可能会导致您的应用似乎停止响应用户。