我有一個Spark列表,我在其中手動添加自定義組件(沒有項目渲染器)。除了當我在列表中添加數百個項目時(基於幾次計算),一切正常,呈現時間增加到幾秒鐘。Flex Spark列表項呈現延遲刷新
我的問題是:
- 是否柔性自動延時被添加到列表中的組件再現?
- 如果不是那麼,我怎麼能告訴火花列表,只有一旦一切都被添加渲染組件。
我希望我所問的是有道理的。我非常確定渲染時間正在增加,因爲我在自定義組件中有相當多的組件。我只需要簡單回答我的問題。
我有一個Spark列表,我在其中手動添加自定義組件(沒有項目渲染器)。除了當我在列表中添加數百個項目時(基於幾次計算),一切正常,呈現時間增加到幾秒鐘。Flex Spark列表項呈現延遲刷新
我的問題是:
我希望我所問的是有道理的。我非常確定渲染時間正在增加,因爲我在自定義組件中有相當多的組件。我只需要簡單回答我的問題。
一件事要知道的是,
ActionScript 3在基於偶數驅動的Flash播放器上運行。這意味着如果您在阻塞中運行一段代碼,則在代碼結束之前不會執行其他任何操作,包括渲染。
這種設計有時會導致一些問題:如果開發人員在一個阻塞函數中添加了太多工作,播放器就會立即凍結並且無響應。 (如果代碼是一個無限循環,它會停止,直到玩家檢測並拋出ScriptTimeoutError,或者可能會永遠丟失。)
但是,對於您的問題,是的,任何事情都會延遲,直到添加作業完成。 Flex組件基本上不會自動分割作業。
Flex組件根據Flex的生命週期呈現在列表中:http://help.adobe.com/en_US/flex/using/WS460ee381960520ad-2811830c121e9107ecb-7fff.html
有兩個原因您的列表可能會運行緩慢,您的組件可能不會從Flex的生命週期正確,第二是因爲虛擬佈局未在列表中啓用。
首先在硬盤之一:
你的第一步應該是,以確保您按照您的自定義組件的正確階段爲commitProperties()
,measure()
和updateDisplayList(unscaledWidth:Number, unscaledHeight:Number)
。
只要你沒有在你的UIComponent子類或LayoutManager上調用任何名爲validateNow()
的方法,那麼你的組件應該很好。
第二個可能是您的列表佈局不使用虛擬佈局。這在Spark List組件中是默認啓用的,但是如果您覆蓋了佈局,則應確保在您使用的任何佈局上useVirtualLayout
設置爲true。
這是什麼,它對加快火花DATAGROUP組件渲染許多項目(該清單): http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html#WS685c4ccbb85d340c6617851e121d4b8abae-8000