(仅限 AIR)
flash.desktop
public class Clipboard
继承Clipboard Inheritance Object

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

Clipboard 类提供一个容器,用于通过剪贴板传输数据和对象。在 AIR 中,Clipboard 类还用于拖放操作。通过静态 generalClipboard 属性可以访问操作系统剪贴板。

Clipboard 对象可以包含多种格式的相同信息。通过以多种格式提供信息,可以增加另一个应用程序能够使用该信息的机会。使用 setData()setDataHandler() 方法向 Clipboard 对象添加数据。

标准格式是:

ClipboardFormats 类中定义了用作标准格式的名称的这些常量。

在 Flash Player 或 AIR 应用程序与操作系统之间进行传输时,将在 JavaScript ActionScript 数据类型和本地剪贴板之间自动转换标准格式。

可以使用应用程序定义的格式将 JavaScript ActionScript 对象添加到 Clipboard 对象中。如果对象可序列化,则可以使用对该对象的引用和该对象的克隆。对象引用只在原始应用程序中有效。

如果将待传输的信息转换成特殊格式时运算成本很高,则可以提供执行该转换的函数名称。当且仅当接收组件或应用程序能够读取该格式时,才能调用此函数。使用 setDataHandler() 方法将延迟呈现函数添加到 Clipboard 对象中。

关于 AIR 应用程序的注意事项:为 HTML 拖放事件和复制并粘贴事件调度的事件对象所引用的剪贴板对象与 AIR Clipboard 对象的类型不同。JavaScript 剪贴板对象在 AIR 开发人员指南中进行了说明。

查看示例

另请参见

flash.desktop.NativeDragManager
flash.desktop.ClipboardFormats
flash.desktop.ClipboardTransferMode


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  formats : Array
[只读 (read-only)] 一个字符串数组,其中包含此 Clipboard 对象中的可用数据格式的名称。
Clipboard
  generalClipboard : Clipboard
[静态] [只读 (read-only)] 操作系统剪贴板。
Clipboard
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
创建空 Clipboard 对象。
Clipboard
  
从此 Clipboard 对象中删除所有数据表示形式。
Clipboard
  
删除指定格式的数据表示形式。
Clipboard
  
getData(format:String, transferMode:String = "originalPreferred"):Object
如果指定格式的数据存在,则获取剪贴板数据。
Clipboard
  
检查指定格式的数据在此 Clipboard 对象中是否存在。
Clipboard
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
setData(format:String, data:Object, serializable:Boolean = true):Boolean
使用指定的数据格式添加要传输的信息的表示形式。
Clipboard
  
setDataHandler(format:String, handler:Function, serializable:Boolean = true):Boolean
添加对某个处理函数的引用,该函数根据需要生成指定格式的数据。
Clipboard
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
formats属性
formats:Array  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

一个字符串数组,其中包含此 Clipboard 对象中的可用数据格式的名称。

用作标准格式名称的字符串常量在 ClipboardFormats 类中定义。应用程序定义的其它字符串也可以用作格式名称,以便将数据作为对象传输。



实现
    public function get formats():Array

另请参见


示例
下面的示例读取系统剪贴板的 formats 数组:
var availableFormats:Array = Clipboard.generalClipboard.formats;
generalClipboard属性 
generalClipboard:Clipboard  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

操作系统剪贴板。

粘贴到系统剪贴板中的任何数据均对其他应用程序可用。这可能包括网络浏览器中运行的不安全的远程代码。

注意:在 Flash Player 10 应用程序中,从剪贴板执行的粘贴操作会首先需要发生用户事件(例如,按下“粘贴”命令的快捷键或用鼠标单击上下文菜单中的“粘贴”命令)。只有在 InteractiveObject 已收到粘贴事件并对其进行操作的情况下,Clipboard.getData() 才会返回剪贴板内容。任何其他情况下都不能成功调用 Clipboard.getData()。在 AIR 中,对于应用程序沙箱之外的内容适用同样的限制。

generalClipboard 对象是自动创建的。不能为此属性分配 Clipboard 的另一个实例。改用 getData()setData() 方法可以读取现有对象中的数据和将数据写入现有对象。

在向剪贴板中写入新数据之前,应始终清理剪贴板,以确保擦除所有格式的旧数据。



实现
    public static function get generalClipboard():Clipboard

示例
写入到操作系统的剪贴板中:
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;
构造函数详细信息
Clipboard()构造函数
public function Clipboard()

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

创建空 Clipboard 对象。


引发
IllegalOperationError — Flash Player 中不支持 new Clipboard(),原因是在 Flash Player 中只能使用操作系统的剪贴板。对于涉及操作系统剪贴板的复制并粘贴操作,请使用 Clipboard.generalClipboard 对象,而不要创建新 Clipboard 对象。不会在 AIR 应用程序中引发错误。

另请参见


示例

下面的示例创建一个用于 NativeDragManager 类的新剪贴板。

注意:对于涉及操作系统剪贴板的复制并粘贴操作,请使用 Clipboard.generalClipboard 对象,而不要创建新剪贴板。

import flash.desktop.Clipboard;
 
 var clipboard:Clipboard = new Clipboard();
方法详细信息
clear()方法
public function clear():void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

从此 Clipboard 对象中删除所有数据表示形式。


示例

下面的示例清除系统剪贴板:
Clipboard.generalClipboard.clear();
clearData()方法 
public function clearData(format:String):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

删除指定格式的数据表示形式。

参数

format:String — 要删除的数据格式。


示例

下面的示例将清除系统剪贴板中具有格式 ClipboardFormats.TEXT_FORMAT 的任何数据:
import flash.desktop.ClipboardFormats;
 
 Clipboard.generalClipboard.clearData(ClipboardFormats.TEXT_FORMAT);
getData()方法 
public function getData(format:String, transferMode:String = "originalPreferred"):Object

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

如果指定格式的数据存在,则获取剪贴板数据。在使用 getData() 之前,Flash Player 需要发生用户事件(如按键或鼠标单击)。在用户启动的粘贴事件处理函数内调用 getData()。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

在访问标准数据格式时,将会以相应 Flash Player 或 AIR 类型的新对象的形式返回数据。

在访问应用程序定义的格式时,transferMode 参数的值确定是返回对原始对象的引用,还是返回包含原始对象的序列化副本的匿名对象。如果指定了 originalPreferredclonePreferred 模式,则当首选的版本不可用时,Flash Player 或 AIR 将返回替代版本。如果指定了 originalOnlycloneOnly 模式,则当请求的版本不可用时,Flash Player 或 AIR 将返回 null

参数

format:String — 要返回的数据格式。格式字符串可以包含 ClipboardFormats 类中定义的标准名称之一,也可以包含一个应用程序定义的名称。
 
transferMode:String (default = "originalPreferred") — 指定在访问应用程序定义的数据格式时是返回一个引用还是返回序列化副本。该值必须是 ClipboardTransferMode 类中定义的名称之一。对于标准数据格式忽略此值,但始终会返回一个副本。

返回
Object — 一个类型与该数据格式相对应的对象。

引发
Error transferMode 不是在 ClipboardTransferMode 类中定义的名称之一。
 
IllegalOperationError — 范围中不再存在请求的 Clipboard 对象(仅限 AIR)。
 
SecurityError — 在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

另请参见


示例

下面的示例将读取系统剪贴板中的文本(如果可用):
import flash.desktop.ClipboardFormats;

 var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
hasFormat()方法 
public function hasFormat(format:String):Boolean

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

检查指定格式的数据在此 Clipboard 对象中是否存在。

使用 ClipboardFormats 类中的常量引用标准格式名称。

参数

format:String — 要检查的格式类型.

返回
Boolean — 如果存在指定格式的数据,则为 true

引发
IllegalOperationError — 范围中不再存在请求的 Clipboard 对象(仅限 AIR)。
 
SecurityError — 在此上下文中不允许从剪贴板读取或写入剪贴板。

另请参见


示例

下面的示例测试系统剪贴板以确定文本格式的数据是否可用:
if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){
    //do something 
}
setData()方法 
public function setData(format:String, data:Object, serializable:Boolean = true):Boolean

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

使用指定的数据格式添加要传输的信息的表示形式。在使用 setData() 之前,Flash Player 需要发生用户事件(如按键或鼠标单击)。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

可以将相同信息的不同表示形式以不同格式添加到剪贴板,这可提高其他组件或应用程序利用可用数据的能力。例如,在 AIR 应用程序中,图像可以添加为位图数据以供图像编辑应用程序使用、添加为 Bitmap 对象以供其他 AIR 应用程序使用以及添加为编码的 PNG 文件以便传输到本机文件系统。

data 参数必须是适用于指定格式的相应数据类型:

格式类型说明
ClipboardFormats.TEXT_FORMAT String 字符串数据。
ClipboardFormats.HTML_FORMAT String HTML 字符串数据
ClipboardFormats.URL_FORMAT String URL 字符串(仅限 AIR)
ClipboardFormats.RICH_TEXT_FORMAT ByteArray RTF 数据
ClipboardFormats.BITMAP_FORMAT BitmapData 位图数据(仅限 AIR)
ClipboardFormats.FILE_LIST_FORMAT File 的数组 文件数组(仅限 AIR)
自定义格式名称任意对象引用和序列化克隆

自定义格式名称不能以“air:”或“flash:”开头。在 AIR 应用程序中,为了避免在使用自定义格式时发生名称冲突,您可能需要使用应用程序 ID 或包名称作为格式的前缀,例如“com.example.applicationName.dataPacket”。

当在 Flash Player 或 AIR 应用程序内或在二者之间传输时,serializable 参数确定引用和副本是否都可用,或是否只有对象的引用才可用。将 serializable 设置为 true 可使该数据对象的引用和副本都可用。将 serializable 设置为 false 则只使对象引用可用。对象引用仅在当前应用程序中有效,因此,将 serializable 设置为 false 还意味着使用该格式的数据将对其他 Flash Player 或 AIR 应用程序不可用。组件可以通过在访问该格式的数据时设置适当的剪贴板传输模式来选择获取该对象的引用或获取该对象的副本。

注意:当在支持的应用程序外部粘贴或拖动数据时(仅限 AIR),标准格式始终转换成本机格式,因此,serializable 参数的值不影响采用标准格式的数据对于非 Flash Player 或非 AIR 应用程序的可用性。

若要延迟呈现某一格式的数据,请改用 setDataHandler() 方法。如果同时使用 setData()setDataHandler() 方法添加具有相同格式名称的数据表示方式,则永远也不会调用该处理函数。

参数

format:String — 数据的格式。
 
data:Object — 要添加的信息。
 
serializable:Boolean (default = true) — 为可以序列化(和反序列化)的对象指定 true

返回
Boolean — 如果成功设置了数据,则为 true;否则为 false。在 Flash Player 中,如果 format 是不受支持的 ClipboardFormats 成员,则返回 false。(Flash Player 不支持 ClipboardFormats.URL_FORMATClipboardFormats.FILE_LIST_FORMATClipboardFormats.BITMAP_FORMAT)。

引发
IllegalOperationError — 范围中不再存在请求的 Clipboard 对象(仅限 AIR)。
 
SecurityError — 在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。
 
TypeError formatdatanull

另请参见


示例

下面的示例以文本格式和 HTML 格式向系统剪贴板中添加内容:
import flash.desktop.ClipboardFormats;
 
 var htmlString:String = "<html><body>Body content</body></html>";
 Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, urlString);
 Clipboard.generalClipboard.setData(ClipboardFormats.HTML_FORMAT, urlString);
setDataHandler()方法 
public function setDataHandler(format:String, handler:Function, serializable:Boolean = true):Boolean

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.0

添加对某个处理函数的引用,该函数根据需要生成指定格式的数据。使用此方法可将数据的创建或呈现延迟到实际访问数据时。在使用 setDataHandler() 之前,Flash Player 需要发生用户事件(如按键或鼠标单击)。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

处理函数必须返回适合指定格式的相应数据类型:

格式返回类型
ClipboardFormats.TEXT_FORMAT String
ClipboardFormats.HTML_FORMAT String
ClipboardFormats.URL_FORMAT String(仅限 AIR)
ClipboardFormats.RICH_TEXT_FORMAT ByteArray
ClipboardFormats.BITMAP_FORMAT BitmapData(仅限 AIR)
ClipboardFormats.FILE_LIST_FORMAT File 数组(仅限 AIR)
自定义格式名称非 void

当且仅当读取指定格式的数据时才会调用该处理函数。请注意,在添加处理函数时和读取数据时之间,基础数据可能会发生更改,除非应用程序采取一些措施来保护数据。多次读取剪贴板中由处理函数表示的数据时发生的行为没有保证。Flash Player 或 AIR 可能会返回由第一个函数调用生成的数据,也可能会再次调用该函数。不要依赖任一行为。

若要直接向此 Clipboard 对象添加数据,请改用 setData() 方法。如果使用相同的格式名称调用 setData()setDataHandler() 方法,则永不调用该处理函数。

参数

format:String — 返回要传输的数据的函数。
 
handler:Function — 数据的格式。
 
serializable:Boolean (default = true) — 如果由 handler 返回的对象可以序列化(和反序列化),则指定 true

返回
Boolean — 如果成功设置了处理函数,则为 true;否则为 false

引发
TypeError formathandlernull
 
IllegalOperationError — 范围中不再存在请求的 Clipboard 对象(仅限 AIR)。
 
SecurityError — 在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

另请参见


示例

下面的示例通过延迟数据函数向系统剪贴板添加一个随机数。
import flash.desktop.ClipboardFormats;
 
 Clipboard.generalClipboard.setDataHandler(ClipboardFormats.TEXT_FORMAT, randomNumberGenerator);

 public function randomNumberGenerator():String{
     return Math.random().toString();
 }
示例 如何使用示例
ClipboardExample.as

下面的示例使用 ClipboardExample 类通过系统剪贴板将一个字符串从一个变量复制到另一个变量。执行下列步骤可完成该任务:
  1. 将数据(在本例中为一个字符串)写入到 Clipboard.generalClipboard 中。
  2. Clipboard.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);
        }
        
        private function paste():String{
            if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){
                return String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));
            } else {return null;}
        }
        
    }
}