事实上,他们(皮肤和itemRenderers)似乎都使用flash.graphics。*包进行绘图。我之前在皮肤和itemRenderers之间复制了粘贴代码,所以我真的不明白其中的区别。我有更多的经验来实现itemRenderers而不是皮肤,所以这可能是问题的一部分。谢谢,让我知道。
答案 0 :(得分:4)
皮肤是可以应用于各种UIComponents的图形元素。容器可以有borderSkins和Buttons可以有各种up / over / down皮肤。它们可以通过多种方式实现,包括使用绘图API(“Programmatic skin”)或嵌入资源(“Graphical skin”)。皮肤通常非常轻巧,可能只是Flash DisplayObject而不是Flex UIComponent,它更重量级但包含更多功能。
itemRenderer通常是基于列表的控件用于显示项目的UIComponent。在使用DataGrid / DataGridColumn时,通常也使用itemRenderers。大多数使用itemRenderers的组件都会回收它们,这意味着它们创建的屏幕数量与屏幕上显示的数量相同,并且当用户滚动数据时,相同的itemRenderers会重新定位并将新数据插入其中。这就是Lists和DataGrid可以支持大量数据的原因之一,以及为什么尝试使用Repeater完成类似的事情会导致应用程序性能下降。