【发布时间】:2012-12-03 21:13:11
【问题描述】:
我有一个带有他的 ItemRenderer 的列表,好吧,当我将数据发送到 dataprovider 时,这进入函数“设置数据”(覆盖),我有两个图像和一个标签,当数据发送时我检查图像是否有要设置的来源,如果这个项目有那个来源,那么我没有设置来源以避免闪烁效果,但它不起作用,为什么?在我检查图像来源的情况下,这是空的。
来源:
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的值相同,则不再设置该值。
编辑: 如果发送更多数据,所有项目都工作正常,除了第一个项目;只有第一项在其中一个图像中存在闪烁问题。
【问题讨论】:
-
我看到的第一件事可能会给您带来奇怪的结果,因为您没有调用超级...该方法的第 1 行应该读取 super.data = _data;其次,您应该始终检查输入的有效值。因此,该方法的第 2 行应始终读取 if(_data){ //do all other stuff }。第三个建议是总是有一个最终的 else 将渲染器中的所有内容设置回 null (或某个默认值),因为渲染器会被回收,并且当它们这样做时可能会在其中包含旧数据。试试这些,看看能不能解决问题。
标签: apache-flex list itemrenderer