上篇我小结了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这个类我们可以在网上直接搜得到。相当方便,也简单易懂。