如何在AS3中粘贴选定的文本

时间:2012-01-16 08:55:53

标签: flash actionscript-3 flex

我有一个问题是如何将选定或复制的文本粘贴到flash as3中的舞台或文本区域?我复制了文本,但不知道如何将文本粘贴到文本字段中。 救命啊!

提前致谢!

4 个答案:

答案 0 :(得分:5)

我得到了答案:

package
{
    import flash.display.Sprite;
    import flash.desktop.Clipboard;
    import flash.desktop.ClipboardFormats;
    import flash.desktop.ClipboardTransferMode;
    import flash.events.*;
    import flash.system.System;

    public class ClipboardExample extends Sprite
    {
       public function ClipboardExample()  
       {     
           Clipboard.generalClipboard.clear(); 
           copyButton.addEventListener(MouseEvent.MOUSE_UP, copyText);
       }

       private function copyText(e:MouseEvent):void 
       {
           Clipboard.generalClipboard.clear();
           System.setClipboard(myField.text);
           messageField.text = "Copied!";
           stage.addEventListener(Event.PASTE,paste); //Ctrl+V on stage
       }       

       private function paste(e:Event):void
       {
          if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT))
          {                 
             messageField.text = String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));
          } 
      }
   }    
 }

答案 1 :(得分:0)

你的意思是myTextField.text = copiedTextVariable;?

答案 2 :(得分:0)

我认为这就是你要找的东西:

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.system.System;
    import flash.text.TextField;
    import flash.text.TextFieldType;

    public class SelectTextTest extends Sprite {
        public function SelectTextTest() {
            var tf:TextField = new TextField();
            tf.x = 0;
            tf.y = 0;
            tf.width = 200;
            tf.height = 200;
            addChild(tf);
            tf.wordWrap = true;
            tf.type = TextFieldType.INPUT;
            tf.text = "This is the text. Try to select";
            tf.addEventListener(MouseEvent.CLICK, printCursorPosition);
        }

        private function printCursorPosition(event:MouseEvent):void {
            var tf:TextField = TextField(event.target);
            trace("caretIndex:", tf.caretIndex);
            trace("selectionBeginIndex:", tf.selectionBeginIndex);
            trace("selectionEndIndex:", tf.selectionEndIndex);
            trace(tf.text.substring(tf.selectionBeginIndex, tf.selectionEndIndex));
            System.setClipboard(tf.text.substring(tf.selectionBeginIndex, tf.selectionEndIndex));
        }
    }
}

答案 3 :(得分:0)

自Flash Player 10以来,嵌入在网站应用上的Flash只能在处理用户直接分派的PASTE事件时才能访问Clipboard.generalClipboard.getData()方法。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/desktop/Clipboard.html

注意:为了避免异常安全性,事件的目标必须是应用程序的阶段对象。 我没有在任何文档中找到这些信息,这是我自己的经验。希望它有效