我想在AS3中获取剪贴板文本(flex,flashdevelop)。我知道我不能只监视剪贴板,因为虽然大多数其他环境都可以,但Flash应用程序是邪恶的,当他们看到密码及其实际所属的帐户时可以猜测。这就是为什么我听一个MouseEvent.CLICK事件,但看起来它最近改变了,Flash仍然说“不,不!”。这就是我将addEventListener(Event.Paste)添加到TextField的原因,但看起来像TextField没有调度这样的事件。
我在互联网上尝试了很多解决方案,但它们根本不起作用,关于剪贴板的文档经常过时。
我是否会遗漏某些东西,或者Adobe的徽标颜色是否具有社会主义的根源?
答案 0 :(得分:1)
flash.desktop.Clipboard
班怎么样?这应该是您访问剪贴板的方式。该类在Flash Player 10之后可用。使用Clipboard
类,您可以以多种预定义格式读取数据并将数据写入系统的剪贴板。查看API documentation of Clipboard class以获取有关它的详细信息。
答案 1 :(得分:0)
多年以后,我偶然发现了自己的问题来回答它。
在Flash中粘贴User Initiated Actions之一。必须通过右键单击并从内置上下文菜单中选择Paste
或按CTRL+V
组合(在Windows上),InteractiveObject
(TextField
除外)来启动它是焦点。
如果满足这些要求,则会调度Event.PASTE
,并且在侦听器中您可以访问Clipboard.getData()
方法。
只留下一件事,并带我到这里寻找解决方案:当剪贴板中没有任何内容时,如何在自定义上下文菜单中禁用Paste
按钮?似乎只有一个解决方案 - 定期检查Clipboard.generalClipboard.formats.length
。
package simpletests
{
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.utils.Timer;
public class PasteTest extends Sprite
{
private var cont:ContextMenu;
public function PasteTest()
{
cont = new ContextMenu ();
cont.hideBuiltInItems ();
cont.clipboardMenu = true;
var timer:Timer = new Timer ( 100 );
this.contextMenu = cont;
stage.focus = stage;
timer.start ();
timer.addEventListener ( TimerEvent.TIMER, onTimer );
stage.addEventListener ( FocusEvent.FOCUS_OUT, onFocusOut );
stage.addEventListener (Event.PASTE, onPaste );
}
private function onTimer ( e:TimerEvent ):void
{
cont.clipboardItems.paste = Clipboard.generalClipboard.formats.length;
}
private function onPaste ( e:Event ):void
{
trace ( Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) );
}
private function onFocusOut ( e:FocusEvent ):void
{
stage.focus = stage;
}
}
}
如果要清除剪贴板以进行测试,可能会发现错误的解决方案,例如执行如下命令:%windir%\System32\cmd /c "echo off | clip"
。它将空字符串放入剪贴板,并且不禁用上下文菜单中的“粘贴”选项。而是(在Windows中)剪切和粘贴文件。这将使上下文菜单中的Paste
选项变灰。