santiago1983

学无止境

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

上篇我小结了dragEvent的dragIn的使用。

这篇我们就以dragEvent的dragOut的使用来看flash 与 flex的不同。

使用dragOut,首先我们要在程序内有个对象。我以图片为例。

首先要明白,我们要的不是图片本身,而是图片的内容, 即bitmapData对象。

因此:

private varimageData:BitmapData;

private function initHandler():void {

imageData= new BitmapData(image.width, image.height );

imageData.draw(image );

}

然后,我们要拖动图片到本地,则需在mouseDown的时刻触发一下内容:

private function clickHandler():void {

var transfer:Clipboard =new Clipboard();

transfer.setData(ClipboardFormats.FILE_LIST_FORMAT, [getImageFile()], false);

NativeDragManager.dropAction= NativeDragActions.COPY;

NativeDragManager.doDrag(this,transfer,imageData);

}

private function getImageFile():File{

var tempFile:File =tempDir.resolvePath( "img.png");

var png:ByteArray = new PNGEncoder().encode(imageData );

var stream:FileStream = new FileStream();

stream.open(tempFile, FileMode.WRITE );

stream.writeBytes(png );

stream.close();

return tempFile

}

实际上,一眼可以看出我将生成的图片命名为img.png.

那么看看不同点是什么?就是PNGEnoder类: Flash内没有这个内。

但是,我们依然可以下载,加入这个类,PNGEncoder这个类我们可以在网上直接搜得到。相当方便,也简单易懂。




posted on 2012-02-11 22:18  santiago1983  阅读(353)  评论(0编辑  收藏  举报