ตรรกะ setStyle ควรจะอยู่ที่ไหนในวิธีการแทนที่ของ Itemrenderers

ฉันมี itemrenderer ต่อไปนี้

<?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 หรือยังคงอยู่ใน set data() เอง ผลลัพธ์ไม่ดีจากทั้งสองอย่าง ประสิทธิภาพจะส่งผลต่อความแตกต่างอย่างไรหากเราพิจารณาจากมุมมองของวงจรชีวิต (การคำนวณจำนวนมากควรถูกผลักดันไปยังจุดสิ้นสุดของการเรนเดอร์เฟรม)


person krishma sood    schedule 04.08.2011    source แหล่งที่มา


คำตอบ (1)


ในแบบของคุณ ฉันอยากจะใช้ 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>
person Constantiner    schedule 04.08.2011