2010-02-11 75 views
2

我知道你可以在控件中使用右键单击来选择剪切,复制,粘贴等等,我也注意到你可以使用Windows键盘快捷键CTRL-C进行复制和粘贴的CTRL-V。有没有办法允许使用Shift-Insert在CTRL-V之上粘贴剪贴板?

Windows支持原生CTRL插入(用于复制)和SHIFT插入(用于粘贴)。

但是,在Flex中,似乎这些似乎不起作用。有没有人能够允许这些键盘事件?任何解决方案,赞赏。

+0

你在说什么语境?他们应该在文本区域或文本输入中工作,但就是这样。 – 2010-02-11 20:00:59

+0

那么,CTRL-C和CTRL-V可以在文本区域或输入内工作,但CTRL-Insert和SHIFT-Insert不起作用。他们几乎执行相同的功能。不过,我猜99%的人口使用CTRL-C和CTRL-V。我在少数。 但是你应该注意到CTRL-Insert和SHIFT-Insert几乎可以在所有其他的Windows应用程序中工作。 – bugsmash 2010-02-15 16:07:26

+0

这是Flex中的一个回归问题,它适用于较旧的控件,不适用于火花控件。一个错误已经提交。 https://bugbase.adobe.com/index.cfm?event=bug&id=2928015如果您觉得应该更正,请投票。 – 2013-02-07 10:50:44

回答

1

剪贴板课程从Flash Player 10开始提供。

1

注意:操作系统和Web浏览器将在Adobe Flash Player或AIR之前处理键盘事件。例如,在Microsoft Internet Explorer中,在任何包含的SWF文件调度键盘事件之前,按Ctrl + W会关闭浏览器窗口。

你可以做类似这样的

<?xml version="1.0" encoding="utf-8"?> 

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" creationComplete="init()"> 

<mx:Script> 

<![CDATA[ 

    private function init():void{ 

    this.addEventListener(MouseEvent.CLICK, clickHandler); 

    this.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed); 

    } 

    private function clickHandler(event:MouseEvent):void { 

     stage.focus = this; 

    } 

    private function keyPressed(evt:KeyboardEvent):void{ 

     if(evt.ctrlKey && evt.keyCode == 65) 

      trace("CTRL A is pressed"); 

     if(evt.ctrlKey && evt.keyCode == 66) 

      trace("CTRL B is pressed"); 

    } 

]]> 

</mx:Script> 

</mx:Application> 

然后东西写操作系统剪贴板:

import flash.desktop.ClipboardFormats; 

var copy:String = "A string to copy to the system clipboard."; 
Clipboard.generalClipboard.clear(); 
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, copy); 

要从操作系统剪贴板阅读:

import flash.desktop.ClipboardFormats; 

var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String; 
+0

我正在使用Flex Builder 3,不知道我可以在哪里导入flash.desktop。我只找到以下内容,但它只能让你粘贴到Windows剪贴板。我实际上没有测试过它,但我仍然试图找到一种粘贴到TextInput的方法。我已经编写了KeyboardEvent代码来获取Shift-Insert事件。我只是不知道如何进入系统剪贴板。也许我错过了flash.desktop。*不知何故。 import flash.system.System; System.setClipboard(string); – bugsmash 2010-02-11 21:21:11

+0

它仅在AIR中。 http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/desktop/Clipboard.html – 2010-02-12 01:04:59