如何在 UILoader 中添加两个 UILoader 并使用 actionscript 3 保存 UILoader 的内容

Posted

技术标签:

【中文标题】如何在 UILoader 中添加两个 UILoader 并使用 actionscript 3 保存 UILoader 的内容【英文标题】:How to add two UILoader inside a UILoader and save the contents of the UILoader using actionscript 3 【发布时间】:2015-02-10 20:08:01 【问题描述】:

过去几个小时我一直在研究如何在 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");

问题是在保存过程中,我只能看到文件中的白色图像,而看不到两个内容。我期望图像文件中有一个带有兔子的背景,它恰好放置在工作空间中手动绘制的两个组件上。

【问题讨论】:

您是如何设法在另一个UILoader 的“内部”添加UILoader?编辑:没关系,我看到addChild的电话。 【参考方案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"); 
    

【讨论】:

以上是关于如何在 UILoader 中添加两个 UILoader 并使用 actionscript 3 保存 UILoader 的内容的主要内容,如果未能解决你的问题,请参考以下文章

AS3 UILoader 外部图像循环

如何在单视图中添加两个 GestureRecgonizer

如何在同一查询中添加两个选择命令的结果

如何在 SAS 中精确地添加两个大数?

如何在刀片 Laravel 中添加两个数字

如何在 UIPageViewcontroller 中添加两个视图控制器