将定制的MovieClip作为图像保存到本地磁盘(DIY发电机)



dropbox.com/s/77euop1luqjreos/final.fla.fla

好吧,我已经放弃了。我无法想到保存用户创建的图像的任何方法。很难解释,但请查看我工作的FLA文件。基本上是DIY发电机。唯一缺少的是保存功能。我在文件类中读取归档。我的代码在时间表中。请帮助我真的很困

编辑:我有一个现在正在工作的下载按钮!!但这只保存了MovieClip的一小部分:imgur

要创建图像,您需要访问 movieclip 对象的像素数据。可以通过将 MovieClip 渲染到 BITMAPDATA 对象并使用此数据时获得数据,您可以编写自己的编码器将其转换为您想要的任何图像格式。编写这种编码不是一项琐碎的任务,需要了解图像格式算法,或者您可以使用预编写的库。您可以下载 pngencoder jpgencoder ,它是开源项目库As3Corelib的一部分。

使用 JPGENCODER ,我们可以将 displayObject 转换为 bytearray ,适合保存到文件中。如果使用 jpgencoder ,则看起来像这样:

import com.adobe.images.JPGEncoder;
var jpgEncoder:JPGEncoder = new JPGEncoder(quality);
//remember bitmapData here is just an example (do not try to compile this code without declare this particular variable)
var byteArray:ByteArray = jpgEncoder.encode(bitmapData);

使用 pngencoder ,看起来像这样:

import com.adobe.images.PNGEncoder;
//remember bitmapData here is just an example (do not try to compile this code without declare this particular variable)
var byteArray:ByteArray = PNGEncoder.encode(bitmapData);

保存到用户的硬盘驱动器

使用 fileReference .save()函数,我们可以提示用户使用以下调用保存文件。

var fileReference:FileReference=new FileReference();
//in case of JPGEncoder
fileReference.save(byteArray, ".jpg");

将两个组合在一起,这是一个示例:

//remember to import
import flash.net.FileReference;
import com.adobe.images.JPGEncoder; //or import com.adobe.images.PNGEncoder;
import flash.utils.ByteArray;
import flash.display.BitmapData;
//where mc_canvas will be your MovieClip instance name
var bitmapData:BitmapData = new BitmapData(mc_canvas.width, mc_canvas.height);
bitmapData.draw(mc_canvas);  
var jpgEncoder:JPGEncoder = new JPGEncoder(quality_slider.value);
var byteArray:ByteArray = jpgEncoder.encode(bitmapData);
//if you want to use PNGEncoder 
//var byteArray:ByteArray = PNGEncoder.encode(bitmapData);
var fileReference:FileReference = new FileReference();
fileReference.save(byteArray, ".jpg");

最新更新