1

私は彼の ItemRenderer を含むリストを持っています。データを dataprovider に送信すると、これが関数「データの設定」(オーバーライド) に入力されます。2 つの画像と 1 つのラベルがあり、データが送信されたときに次のことを確認します。画像には設定するソースがあります。このアイテムにそのソースがある場合、まばたき効果を回避するためにソースを設定していませんが、機能していません。なぜですか? 画像のソースを確認した状態で、これはnullです。

ソース:

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"/>

次に、アイテムが 'repaint' の場合、この要素のプロパティを確認し、_data var の値が同じ場合は、値を再設定しないでください。

編集: さらにデータが送信されると、最初の項目を除くすべての項目が正常に機能します。最初のアイテムだけが、画像の 1 つにこの点滅の問題があります。

4

1 に答える 1

0

You can add this to your list definition(it will switch off renderers' recycling):

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

and see if problem persists.

If no, you can leave it like that, but it may influense app's performance for large lists. Otherwise, you may imlement your renderer in such way that it will not set source again, but instead will add already-made image from some pre-made collection, especially if 'source' is an url and not embedded BitmapAsset.

于 2012-12-04T13:22:15.217 に答える