您的位置:首页 > 其它

Flex:截图实现之(1)使用AS3对剪贴板读取与写入

2011-07-03 11:11 483 查看
很有用的一篇文章,感谢原作者的分享。 http://www.cnblogs.com/shinings/archive/2010/04/10/1709047.html
基于安全考虑,Flash只允许将数据写入系统剪贴板中,因此,Flash之中只能执行System下的setClipboard方法.
基于Flash的:
例子如下:
使用AS将数据写入内存package {
import flash.display.Sprite;
import flash.system.System;

public class SystemExample extends Sprite {
public function SystemExample() {
System.setClipboard("写入内存的数据");
}
}
}
但是,在AIR中会自由多了,允许读取与写入,但也不是没妈管的孩子,什么事都能做.
在AIR中能读取与写入的有六种数据格式,都由ClipboardFormats来撑管,我们看看这六种数据格式
BITMAP_FORMAT:图像数据。
FILE_LIST_FORMAT:文件数组。
HTML_FORMAT :HTML 数据。
RICH_TEXT_FORMAT:RTF 格式数据。
TEXT_FORMAT:字符串数据。
URL_FORMAT:URL 字符串。
看个由HELP文档中挖出来的例子吧,作用是向剪贴板写入一个随机数:
AS3代码import flash.desktop.ClipboardFormats;

Clipboard.generalClipboard.setDataHandler(ClipboardFormats.TEXT_FORMAT, randomNumberGenerator);

public function randomNumberGenerator():String{
return Math.random().toString();
}
跟据多种数据格式做分类处理,以下是写来获取剪贴板图像源的类文件,将图像源转化为图片.
忘了说明一点,这是用在Flex中的,所以toBitmap中返加UIComponent类型
AS3代码/**
* ...
* @author WZH(shch8.com)
* 获取系统剪贴板
*/
package com.flashNote.getData
{
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.display.Bitmap;
import flash.display.BitmapData;

import mx.core.UIComponent;
public class GetBoardData
{
private static var Instance:GetBoardData=new GetBoardData;
public static function getInstance():GetBoardData{
return Instance;
}
public function GetBoardData()
{

}
public function getData():BoardFormat{
var returnObj:BoardFormat;
returnObj.sort=getSelFormat();
returnObj.data=Clipboard.generalClipboard.getData(returnObj.sort)
var bmd:BitmapData =returnObj.data as BitmapData;
toBitmap(bmd)
return returnObj;
}
private function toBitmap(bmd:BitmapData):UIComponent{
var ui:UIComponent=new UIComponent;
var bm:Bitmap = new Bitmap(bmd);
ui.addChild(bm);
return ui;
}
private function getSelFormat():String{
var backStr:String;
backStr=getFormat(ClipboardFormats.BITMAP_FORMAT)
if(backStr!=""){
return backStr;
}
backStr=getFormat(ClipboardFormats.FILE_LIST_FORMAT)
if(backStr!=""){
return backStr;
}
backStr=getFormat(ClipboardFormats.HTML_FORMAT)
if(backStr!=""){
return backStr;
}
backStr=getFormat(ClipboardFormats.TEXT_FORMAT)
if(backStr!=""){
return backStr;
}
backStr=getFormat(ClipboardFormats.URL_FORMAT)
if(backStr!=""){
return backStr;
}
function getFormat(str:String):String{
if(Clipboard.generalClipboard.hasFormat(str)){
return str
}else{
return "";
}
}
return null;
}
}
}

AS3代码/**
* ...
* @author WZH(shch8.com)
* 传送参数
*/
package com.flashNote.getData
{
public class BoardFormat
{
public var sort:String;
public var data:Object;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: