Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

Best way to blink a Spark Datagrid cell

$
0
0
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?

Viewing all articles
Browse latest Browse all 5648

Trending Articles