1

我有一个带有他的 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 的值相同,则不要再次设置该值。

编辑:如果发送更多数据,所有项目都工作良好,除了第一项;只有第一项在其中一个图像中存在闪烁问题。

4

1 回答 1

0

您可以将其添加到您的列表定义中(它将关闭渲染器的回收):

<s:List>
   <s:layout>
      <s:VerticalLayout useVirtualLayout="false" />
   </s:layout>
</s:list>

看看问题是否仍然存在。

如果不是,您可以这样保留,但它可能会影响应用程序在大型列表中的性能。否则,您可能会以不会source再次设置的方式实施您的渲染器,而是会从一些预先制作的集合中添加已经制作的图像,特别是如果“源”是一个 url 而不是嵌入的 BitmapAsset。

于 2012-12-04T13:22:15.217 回答