2010-02-11 29 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