0
我遇到類似於FLEX: dialog not display immediately的問題。代碼如下:立即在Flex 3中添加子項
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()的保存對話框。
任何想法?
乾杯!
加載圖片在XML中的寬度和高度都會自動調整爲100%,我會希望在我致電validateNow()時完成此操作。 我之前嘗試在這個對象(它是Canvas的子類)中保持loadingCanvas並只是彈出可見性,但它仍然沒有出現。 我假設z順序是正確的,因爲加載屏幕最終會出現,但直到PNGEncoder完成。 – Andrew 2010-07-20 12:14:25
您的意思是XML或MXML?如果您在MXML中創建組件,則不應使用addChild()方法;因爲Flex編譯器可以將MXML轉換爲ActionSCript,其中包括將所有子項添加到適當的容器中。 validateNow()應強制updateDisplayList()運行。但是,您是否正在添加加載屏幕來自動調整大小和定位子項的容器?我認爲你需要分享更多的代碼。 – JeffryHouser 2010-07-20 12:20:16
我的意思是MXML,對不起。我不太清楚你需要多少代碼,所以有這一切: http://pubmap.svn.sourceforge.net/viewvc/pubmap/trunk/pubmap/ 我應該添加代碼以上是在視口/ common.as和加載屏幕是視口/ LoadingScreen.mxml 感謝您的幫助到目前爲止。 – Andrew 2010-07-21 09:52:29