包 | flash.desktop |
类 | public class Clipboard |
继承 | Clipboard Object |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.0 |
generalClipboard
属性可以访问操作系统剪贴板。
Clipboard 对象可以包含多种格式的相同信息。通过以多种格式提供信息,可以增加另一个应用程序能够使用该信息的机会。使用 setData()
或 setDataHandler()
方法向 Clipboard 对象添加数据。
标准格式是:
ClipboardFormats 类中定义了用作标准格式的名称的这些常量。
在 Flash Player 或 AIR 应用程序与操作系统之间进行传输时,将在 JavaScript ActionScript 数据类型和本地剪贴板之间自动转换标准格式。
可以使用应用程序定义的格式将 JavaScript ActionScript 对象添加到 Clipboard 对象中。如果对象可序列化,则可以使用对该对象的引用和该对象的克隆。对象引用只在原始应用程序中有效。
如果将待传输的信息转换成特殊格式时运算成本很高,则可以提供执行该转换的函数名称。当且仅当接收组件或应用程序能够读取该格式时,才能调用此函数。使用 setDataHandler()
方法将延迟呈现函数添加到 Clipboard 对象中。
关于 AIR 应用程序的注意事项:为 HTML 拖放事件和复制并粘贴事件调度的事件对象所引用的剪贴板对象与 AIR Clipboard 对象的类型不同。JavaScript 剪贴板对象在 AIR 开发人员指南中进行了说明。
另请参见
属性 | 定义方 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
formats : Array [只读 (read-only)] 一个字符串数组,其中包含此 Clipboard 对象中的可用数据格式的名称。 | Clipboard | ||
generalClipboard : Clipboard [静态] [只读 (read-only)] 操作系统剪贴板。 | Clipboard | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object |
方法 | 定义方 | ||
---|---|---|---|
创建空 Clipboard 对象。 | Clipboard | ||
从此 Clipboard 对象中删除所有数据表示形式。 | Clipboard | ||
删除指定格式的数据表示形式。 | Clipboard | ||
如果指定格式的数据存在,则获取剪贴板数据。 | Clipboard | ||
检查指定格式的数据在此 Clipboard 对象中是否存在。 | Clipboard | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
使用指定的数据格式添加要传输的信息的表示形式。 | Clipboard | ||
添加对某个处理函数的引用,该函数根据需要生成指定格式的数据。 | Clipboard | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | 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 应用程序中引发错误。
|
另请参见
注意:对于涉及操作系统剪贴板的复制并粘贴操作,请使用 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
参数的值确定是返回对原始对象的引用,还是返回包含原始对象的序列化副本的匿名对象。如果指定了 originalPreferred
或 clonePreferred
模式,则当首选的版本不可用时,Flash Player 或 AIR 将返回替代版本。如果指定了 originalOnly
或 cloneOnly
模式,则当请求的版本不可用时,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_FORMAT 、ClipboardFormats.FILE_LIST_FORMAT 或 ClipboardFormats.BITMAP_FORMAT )。
|
IllegalOperationError — 范围中不再存在请求的 Clipboard 对象(仅限 AIR)。 | |
SecurityError — 在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 | |
TypeError —
format 或 data 为 null 。
|
另请参见
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 —
format 或 handler 为 null 。
| |
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(); }
Clipboard.generalClipboard
中。
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;} } } }