AIR中的Clipboard API 与os的交互

  (一)  与剪切板的交互  
       AIR是一个很有吸引力的技术,它巧妙的将桌面应用技术与Web应用技术柔和在一起,不仅拥有桌面应用中与本地操作系统交互的能力,还享有RIA开发的便利性并拥有无与伦比的功能。
      AIR应用与os之间有许多的“集成点”,但是其中os剪切板的交互是一种非常常见的功能:(1)将网页上一段文字复制到word里 (2)将文本复制到邮件中 (3) 将图片出入到页面中...等等。这些应用都使得利用剪切板进行各种组件之间数据的交互成为了一种日常的行为。尽管Web浏览器也允许user从Web页面上复制、粘贴数据,但是这种交互完全是有浏览器来处理的---开发人员对于这一交互过程几乎没有任何的控制权。而AIR提供的Clipboard API 赋予了开发人员充分控制剪切板的能力。
    The Clipboard class provides a container for transferring data and objects through the clipboard. In AIR, the Clipboard class is also used for drag-and-drop operations. The operating system clipboard can be accessed through the static generalClipboard property.
(二)Clipboard类的介绍(flash.desktop.Clipboard)
     clipboard类能够支持六种数据格式之间的交互,这增强了与其他应用系统交互数据信息的能力。clipboard对象通过setData() or setDataHandler() 完成数据的copy。
    AIR支持的六种数据交互格式:
    (1) BITMAP_FORMAT: a BitmapData object (AIR only)
    (2) FILE_LIST_FORMAT: an array of File objects (AIR only)
    (3) HTML_FORMAT: HTML-formatted string data
    (4) EXT_FORMAT: string data
    (5) RICH_TEXT_FORMAT: a ByteArray containing Rich Text Format data
    (6) URL_FORMAT: a URL string (AIR only)

    下面的一个小例子介绍在AIR中,利用系统的剪切板,使用clipboard类将一个字符串从一个变量copy到另外一个变量中。
 大致通过以下几步:
   1. 写数据到clipboard类的generalClipboard属性中。
   2. 从generalClipboard属性中读取相应的数据做相应的处理。
   package
{
    import flash.display.Sprite;
    import flash.desktop.Clipboard;
    import flash.desktop.ClipboardFormats;
    import flash.desktop.ClipboardTransferMode;

    public class ClipboardExample extends Sprite
    {
        public function ClipboardExample()
        {
            var sally:String = "Sally";
            var person:String;
            
            copy(sally);
            person = paste();
            trace(person); //traces: "Sally"
        }

        private function copy(text:String):void
        {
            Clipboard.generalClipboard.clear();//清空操作系统的剪切板上的内容
            Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, text);//拷贝text的值到剪切板上,并制定数据格式为ClipboardFormats.TEXT_FORMAT,即String类型
        }
        
        private function paste():String
        {
            if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT))
            {
                return String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));//获取剪切板上特定格式的数据
            }
            else
            {
                return null;
            }
         }
     }
  }
  运行输出:"Sally"

posted on 2009-08-30 23:05  Creative Common  阅读(422)  评论(0)    收藏  举报

导航