2009-11-10 60 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完成类似的事情会导致应用程序性能下降。