23.11.与操作系统剪贴板交互

23.11.1.问题
我想与操作系统剪贴板进行数据交换。
23.11.2.解决办法
使用Clipboard类的静态generalClipboard属性。
23.11.3.讨论
除了通过拖拽操作和系统剪贴板交换数据外,还可通过flash.desktop.Clipboard类的静态属性generalClipboard与剪贴板交换数据。AIR程序支持的数据交换格式有:位图数据,标准文本数据,HTML, 和URL格式。当数据可用时,可分别被转换为BitmapData对象,File对象数组和String对象。你还可以用自定义数据与Clipboard对象进行交换,只不过这些数据只能在知道如何处理它的其他AIR程序中可用。

在下面的例子中,你可以添加,删除,访问操作系统剪贴板中的数据:
+展开
-XML
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">
<mx:Script>
<![CDATA[
private function addHandler():void {
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT,textField.text );
}
private function removeHandler():void {
Clipboard.generalClipboard.clear();
}
private function pasteHandler():void {
if ( Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT ) ){
textField.text = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT )as String;
}
}

]]>
</mx:Script>
<mx:TextArea id="textFieldwidth="100%height="100%" />
<mx:Button label="add to clipboardclick="addHandler();" />
<mx:Button label="remove from clipboardclick="removeHandler();" />
<mx:Button label="past from clipboardclick="pasteHandler();" />
</mx:WindowedApplication>

addHandler事件处理函数把<mx:TextArea>控件中显示的内容传送到系统剪贴板。这样你就可以粘贴这些数据到其他非AIR应用程序中了。其他程序拷贝到剪贴板的String数据也可以粘贴到<mx:TextArea>控件中。在pasteHandler方法中,先使用hasFormat方法检测剪贴板中的数据格式,如果是String数据,则被转换为ActionScript String对象并粘贴到组件。removeHandler方法中使用clear方法清除剪贴板。

关于数据格式类型,其实并不局限于ClipboardFormats类所列出的那几种,你可以指定任何可被多个AIR程序所识别的字符串值,比如可能有两个或更多程序处理用户信息,要利用系统剪贴板在应用程序直接共享这些信息,你可以用类似下面的代码把数据放置到剪贴板上:
+展开
-ActionScript
Clipboard.generalClipboard.setData( "userObject"new UserObject( 'Ted''Henderson' ) );

任何知道如何处理userObject格式的AIR应用程序都可以访问和处理剪贴板中的UserObject实例对象。

加支付宝好友偷能量挖...


评论(0)网络
阅读(97)喜欢(0)flash/flex/fcs/AIR