2009-11-10 59 views
2

事實上,他們(皮膚和itemRenderers)似乎都使用flash.graphics。*包進行繪製。我之前已經在皮膚和itemRenderer之間複製粘貼代碼,所以我真的不明白區別。我有更多的實施itemRenderers的經驗比皮膚,所以這可能是問題的一部分。謝謝,讓我知道。在Flex中,skin和itemRenderer有什麼區別?

回答

4

皮膚是一種可應用於各種UIComponent的圖形元素。容器可以有borderSkins,按鈕可以有各種上/下/下的皮膚。它們可以通過多種方式實現,包括使用繪圖API(「程序化皮膚」)或通過嵌入資產(「圖形皮膚」)。皮膚通常非常輕量級,可能只是Flash DisplayObject而不是Flex UIComponent,它更重量級但包含更多功能。

itemRenderer通常是基於列表的控件用來顯示項目的UIComponent。使用DataGrid/DataGridColumn時,通常也使用itemRenderer。大多數使用itemRenderer的組件會回收它們,這意味着它們會創建大約所需的數量以在屏幕上顯示,並且隨着用戶滾動瀏覽數據,相同的itemRenderer將被重新定位並獲取插入到其中的新數據。這就是爲什麼Lists和DataGrid可以支持大量數據的原因之一,以及爲什麼試圖用Repeater完成類似的事情會導致應用程序性能下降。