使用AS3对剪贴板读取与写入

本文介绍如何在Flash和AIR中操作剪贴板,包括数据写入与读取,并提供示例代码。涵盖不同数据格式的支持,如文本、图像等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于安全考虑,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;   
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuanpan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值