过去几个小时我一直在研究如何在UILoader中添加UILoader并保存UILoader的所有内容。我有两个UILoader实例(loader_inner和loader_outer),它们都是使用UILoader组件手动放置的。 代码如下:
loader_inner.load(new URLRequest("background_1.jpg"));
loader_outer.load(new URLRequest("rabbit.jpg"));
loader_outer.addChild(loader_inner);
var bitmapData:BitmapData = new BitmapData(loader_outer.width,loader_outer.height);
bitmapData.draw(loader_outer);
var jpgencoder:JPGEncoder = new JPGEncoder(100);
var mybyte:ByteArray = jpgencoder.encode(bitmapData);
var myfile:FileReference = new FileReference();
myfile.save(mybyte,"test.jpg");
问题出在保存期间,我只能看到文件中的白色图像而不是两个内容。我期待图像文件中有一只兔子的背景,它完全放在工作空间中手动绘制的两个组件上。
答案 0 :(得分:1)
UILoader.load
是一个异步操作。因此,您尝试在实际有机会加载图像之前将加载器绘制到位图。您需要在内部和外部加载器上监听COMPLETE
事件:
import com.adobe.images.JPGEncoder;
import flash.display.Bitmap;
import flash.events.Event;
loader_inner.addEventListener(Event.COMPLETE, onLoadComplete);
loader_outer.addEventListener(Event.COMPLETE, onLoadComplete);
loader_inner.load(new URLRequest("background_1.jpg"));
loader_outer.load(new URLRequest("rabbit.jpg"));
loader_outer.addChild(loader_inner);
function onLoadComplete(e:Event):void
{
// check to make sure that *both* loaders have fully loaded
if(loader_inner.percentLoaded && loader_outer.percentLoaded)
{
var bitmapData:BitmapData = new BitmapData(loader_outer.width,loader_outer.height);
bitmapData.draw(loader_outer);
var jpgencoder:JPGEncoder = new JPGEncoder(100);
var mybyte:ByteArray = jpgencoder.encode(bitmapData);
var myfile:FileReference = new FileReference();
myfile.save(mybyte,"test.jpg");
}
}