I'm wondering how best to blink a cell's background in a Spark Datagrid when
data changes, i.e like in a real-time stock chart. I've seen a couple of
methods, both seem specific to MX not Spark:

a) 

From:

https://code.google.com/p/jpragma-utils/source/browse/trunk/JPragmaFlexUtils/src/com/jpragma/flexutils/renderers/BlinkWhenChangedRenderer.as?r=18

package com.jpragma.flexutils.renderers {
        import flash.events.Event;
        
        import mx.controls.DataGrid;
        import mx.controls.dataGridClasses.DataGridItemRenderer;
        import mx.controls.dataGridClasses.DataGridListData;
        
        public class BlinkWhenChangedRenderer extends DataGridItemRenderer {
                private var lastText:String = null;
                private var lastUID:String = null;
                private var frameCount:int = -1;
        
        
                override public function validateNow():void  {
                        var needBlink:Boolean = false;
                        var valueIncreased:Boolean = false;
                        
        
                        super.validateNow();
        
                        if (!listData) {
                                background = false;
                                return;
                        }
        
                        var dgListData:DataGridListData = listData as
DataGridListData;
                        var dataGrid:DataGrid = dgListData.owner as
DataGrid;
        
                        if (dgListData.uid == lastUID) {
                                if (lastText != dgListData.label) {
                                        needBlink = true;
                                        var oldNumValue:Number = new
Number(lastText);
                                        var newNumValue:Number = new
Number(dgListData.label);
                                        if (oldNumValue < newNumValue) {
                                                valueIncreased = true;
                                        }
                                }
                        }
                        lastUID = dgListData.uid;
                        lastText = dgListData.label;
        
                        if (needBlink) {
                                background = true;
                                backgroundColor = (valueIncreased) ?
0x00FF00 : 0xFF0000;
                                frameCount = 15;
                                addEventListener("enterFrame",
enterFrameHandler);
                        }
                }
        
                private function enterFrameHandler(event:Event):void {
                        frameCount--;
                        if (frameCount < 0) {
                                background = false;
                                removeEventListener("enterFrame",
enterFrameHandler);
                        } else {
                                if (backgroundColor >= 0xFF0000) {
                                        // red
                                        backgroundColor = (15 - frameCount)
* 0x001111 + 0xFF0000;
                                } else {
                                        // green 
                                        backgroundColor = (15 - frameCount)
* 0x110011 + 0x00FF00;
                                }
                        }
                }               
        }
}

----------------

b)

In the past I've used animation, something like this:

<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"; 
                         xmlns:s="library://ns.adobe.com/flex/spark" 
                         xmlns:parsley="http://www.spicefactory.org/parsley";
                         paddingRight="3"
                         verticalAlign="middle"
                         >
        
        <fx:Declarations>
                <parsley:Configure/>
                
                <s:AnimateColor id="ani" 
                                                colorPropertyName="color"
                                                colorFrom="{0xff0000}" 
                                                colorTo="{0x000000}" 
                                                duration="2000" 
                                                />
        </fx:Declarations>

        <fx:Script>
                
        </fx:Script>
        
        <s:Label id="txt" width="100%" textAlign="right"/>
        
</s:VGroup>
-----------------------

So, what's the recommended, least resource intensive, way of doing this in
Spark?






--
View this message in context: 
http://apache-flex-users.2333346.n4.nabble.com/Best-way-to-blink-a-Spark-Datagrid-cell-tp9334.html
Sent from the Apache Flex Users mailing list archive at Nabble.com.

Reply via email to