2011-08-04 86 views
0

我有以下的itemRenderer應該在哪裏的setStyle邏輯的itemRenderer的overided方法去

<?xml version="1.0" encoding="utf-8"?> 
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" focusEnabled="true"> 

<s:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{listData.label}" /> 

<fx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 

     override public function set data(value:Object):void 
     { 
      if(value != null) 
      { 
       super.data = value; 
       if(value.age >30) 
        lblData.setStyle("backgroundColor","red"); 
       else 
        lblData.setStyle("backgroundColor","green"); 
      } 
      //super.invalidateDisplayList(); 
     } 

     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
     { 
      super.updateDisplayList(unscaledWidth,unscaledHeight); 
      if(super.data) 
      { 

      } 
     } 
    ]]> 
</fx:Script> 
</s:MXAdvancedDataGridItemRenderer> 

我的問題是首先應邏輯去updtaeDisplayList或留在一組數據()本身。 輸出從兩者都是smae。如果我們從生命週期的角度考慮性能影響差異,那麼性能影響的差異是多大?(大量計算應推到幀渲染的末尾)

回答

2

以您的方式,我寧願使用invalidateProperties()commintProperties()。但是使用數據綁定呢?

<?xml version="1.0" encoding="utf-8"?> 
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" focusEnabled="true"> 
    <s:Label top="0" left="0" right="0" bottom="0" text="{listData.label}" backgroundColor="{data.age > 30 ? `red` : `green`}" /> 
</s:MXAdvancedDataGridItemRenderer>