2012-12-03 152 views
1

我有一個List與他的ItemRenderer,好吧,當我發送數據到數據提供者,這個函數'設置數據'(覆蓋)輸入,我有那裏兩個圖像和一個標籤,當數據發送時,我檢查圖像是否有設置的源,如果這個項目有源,那麼我沒有設置源,以避免眨眼效果,但它不工作,爲什麼?在條件我檢查圖像的來源,這是空的。Flex項目渲染器 - 眨眼圖像

來源:

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

然後,當產品 '重繪' 檢查這個元素的屬性,如果有_data的VaR值相同,則不要再次設置該值。

編輯: 如果發送更多數據,所有項目都工作正常,除了第一項;只有第一個項目在其中一個圖像中出現閃爍問題。

+0

我看到的第一件事可能會給你帶來奇怪的結果,你並沒有調用超級...該方法的第1行應該讀取super.data = _data;第二,你應該總是檢查一個有效的值進來..所以第2行的方法應該總是閱讀if(_data){//做所有其他的東西}。第三個建議總是有最後一個else,它將渲染器中的所有內容都設置爲null(或者某個默認值),因爲渲染器被回收並且可能在渲染器中存在舊數據。試試這些,看看是否有人爲你解決問題。 –

回答

0

您可以添加到您的列表定義(這將關閉渲染回收):

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

,看看是否問題依然存在。

如果不是,您可以這樣保留,但它可能會影響應用程序的大型列表性能。 否則,您可能會以不會再設置source的方式來渲染渲染器,而是會從某些預製集合中添加已製作的圖像,尤其是如果「源」是一個url而不是嵌入的BitmapAsset。