2011-12-01 64 views
2

我有一個圖像被動態加載並被添加到我的大型應用程序中。在屏幕上顯示對象後觸發了一個Flex事件

加載圖像後,我想爲顯示目的抓取顯示器的位圖。

問題是我找不到任何保證被觸發的事件圖像在屏幕上呈現。

FlexEvent.CREATION_COMPLETE聽起來最接近紙張,但似乎沒有辦法。

爲了測試,我在事件觸發的處理程序的末尾添加了一個斷點,並在斷點觸發時查看圖像是否在屏幕上。

我被迫使用flex 3.3。

回答

0

您是否嘗試過FlexEvent.SHOW事件?

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#event:show

編輯:

如果你能找到的數據被加載(Event.COMPLETE或FlexEvent.CREATION_COMPLETE或別的東西),之後被觸發的事件,你也許能逃脫做一個callLater()並假定圖像將被下一幀渲染。一種黑客,但它可能是值得一試。

+0

FlexEvent.SHOW在任何時候都不會被調用,我相信這隻適用於當一個對象被顯式地從不可見中變爲可見時,而對於正常的圖像加載,它會從未定義的直線變爲可見。 –

+0

我已經用我可能會嘗試的其他東西更新了我的答案。 –

+0

謝謝,但我已經嘗試過(我也嘗試過5次嵌套的callLater(),它工作了一小段時間)。 –

2

圖像是一種特殊情況 - 在加載和渲染圖像數據本身之前,組件可以在顯示列表中完整且可見。

對於s:Image,請查看Image.ready事件。

如果您使用的是mx:Image,請改用Image.complete。 (還有一個s:Image.complete --see它從ready有什麼不同的意見flexdoc)

+0

快速偵察的文檔顯示,該事件不適用於我被強制使用的flex 3.3。我現在更新了這個問題。 –

0

MX圖像上有一個完整的事件,我認爲是你在找什麼。僅供參考,每個課程在其語言參考頁面中都有一個名爲「活動」的部分。通過這些並嘗試看起來很可能的事情通常很有啓發性。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Image.html#eventSummary

+0

我已經嘗試捕獲該事件,並且它在圖像加載完成時似乎被解僱(正如人們所期望的那樣),*不*當圖像必然到達屏幕時。 –

+0

您應該能夠在該點捕捉圖像的像素,除非您嘗試捕捉的不僅僅是圖像。但是,如果在reg'lar complete中爲updateComplete添加一個事件偵聽器,則應該發現在那一刻完成了所有事情。 –

相關問題