dropbox.com/s/77euop1luqjreos/FINAL.fla
好吧,我已经放弃了这个。我想不出任何保存用户创建的图像的方法。很难解释,但请查看我工作的fla文件。基本上它是一个diy发电机。唯一缺少的是保存功能。我已经读过文件引用但它总是在文档类中。我的代码在时间轴中。请帮助我真的卡住了。
编辑:我有一个现在正在运行的下载按钮!但它只保存了一小部分的动画片段:Imgur
答案 0 :(得分:4)
要创建图像,您需要访问 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");