剪贴板更改时的 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);
}
只有在我手动检查剪贴板时才有效。 addEventListener
在 Clipboard.generalClipboard
上有什么方法可以捕捉到它被用户更改了吗?
不,Flash/Air 中不存在用于 OS 剪贴板更改的现有事件(据我所知)
有用于此的本机 OS API 当然,您可以编写一个 ANE 来挂钩本机事件并引发一个 ActionScript 事件,但是您需要为每个 OS您的 Air 应用程序将 运行 开启。
您可以 轮询 计时器事件上的剪贴板(我看到它完成了),抓取内容并将其与上次轮询时进行比较,但这确实是肮脏的 做事方式并取决于用户最后粘贴到剪贴板的内容,您最终可能会检索到一些需要以某种形式散列的非常大的对象(sha/md5) 以确定下一次情况是否发生变化...大量无用的处理和垃圾收集可能会导致您的应用似乎停止响应用户。
我有代码:
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){
var text:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT);
}
只有在我手动检查剪贴板时才有效。 addEventListener
在 Clipboard.generalClipboard
上有什么方法可以捕捉到它被用户更改了吗?
不,Flash/Air 中不存在用于 OS 剪贴板更改的现有事件(据我所知)
有用于此的本机 OS API 当然,您可以编写一个 ANE 来挂钩本机事件并引发一个 ActionScript 事件,但是您需要为每个 OS您的 Air 应用程序将 运行 开启。
您可以 轮询 计时器事件上的剪贴板(我看到它完成了),抓取内容并将其与上次轮询时进行比较,但这确实是肮脏的 做事方式并取决于用户最后粘贴到剪贴板的内容,您最终可能会检索到一些需要以某种形式散列的非常大的对象(sha/md5) 以确定下一次情况是否发生变化...大量无用的处理和垃圾收集可能会导致您的应用似乎停止响应用户。