我有一个带有他的ItemRenderer的List,好吧,当我将数据发送到dataprovider时,这输入函数'set data'(覆盖),我有两个图像和一个标签,当数据发送时我检查图像是否具有将设置的源,如果此项具有该源,则我不设置源以避免闪烁效果,但它不起作用,为什么?在条件中我检查图像的来源,这是空的。
来源:
override public function set data( _data:Object ) : void {
if (imgStatusMessage.source != _data.source) {
imgStatusMessage.source = _data.source;
}
}
...
<s:Image id="imgStatusMessage" width="15" height="15" visible="false"/>
然后,当item为'repaint'时,检查此元素的属性,如果具有相同的_data var值,则不要再次设置该值。
编辑: 如果发送的数据越多,除第一项外,所有项目都能正常工作;只有第一个项目在其中一个图像中出现此问题。
答案 0 :(得分:0)
您可以将其添加到列表定义中(它将关闭渲染器的回收):
<s:List>
<s:layout>
<s:VerticalLayout useVirtualLayout="false" />
</s:layout>
</s:list>
并查看问题是否仍然存在。
如果不是,您可以这样离开,但它可能会影响应用程序对大型列表的性能。
否则,您可能会以不会再次设置source
的方式来渲染渲染器,而是添加来自某些预制集合的已制作图像,尤其是“源”是网址且未嵌入BitmapAsset时。