在Flex 3中立即添加Child

时间:2010-07-19 23:03:21

标签: flex flex3

我遇到类似FLEX: dialog not display immediately的问题。代码如下:

private function saveBitmap(event:ContextMenuEvent):void
{
    loadingScreen.visible = true;
    loadingScreen.appLoadingText.text = "Preparing bitmap...";
    addChild(loadingScreen);

    validateNow();

    var bmpd:BitmapData = new BitmapData(canv.width, canv.height);
    bmpd.draw(canv);

    var fr:FileReference = new FileReference();
    fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, removeLoadingScreen);
    fr.addEventListener(Event.CANCEL, removeLoadingScreen);
    var png:PNGEncoder = new PNGEncoder();
    var iba:ByteArray = png.encode(bmpd);
    fr.save(iba, "export.png"); 
}

基本上,bmpd.draw和/或png.encode是狗慢,所以我想要一个很好的“请在我们准备你的png时按住”对话框出现。由于FileReference,我无法使用callLater()。

只是为了好的衡量,加载屏幕会在调用fr.save()时出现保存对话框。

有什么想法吗?

干杯!

1 个答案:

答案 0 :(得分:0)

您正在此功能中添加孩子。您是否正在对loadingScreen进行任何其他工作,例如调整大小?还是定位呢?最常见的是在updateDisplayList()中完成。你用的是什么容器?

您确定您的两个孩子的Z顺序是否正确?您可以使用swapChildren方法交换孩子