2010-11-23 2 views
0

je suis tableau colonne I PERSONNALISATION, dans l'ordre suivant:un ou l'autre mais pas les deux

  1. Si la valeur de la colonne est négative, la couleur de la colonne est rouge. Sinon, il est noir
  2. je change alors en sorte que toutes les données apparaîtront au-dessus de l'axe x en changeant toutes les valeurs négatives positifs

Je peux obtenir # 1 & # 2 pour afficher parfaitement individuellement, mais quand J'essaie de mettre en œuvre les deux, je reçois seulement des colonnes noires (ie le code convertira les valeurs négatives en positifs et ALORS appliquera les couleurs, donc toutes les colonnes sont noires .... même si dans mon code j'ai la couleur appliquée AVANT le la valeur absolue partie du code.Toutes les suggestions sur la façon dont je corrige ce?

Ci-dessous mon code actioncript:

package utils 
{ 
import mx.core.IDataRenderer; 
import mx.core.UIComponent; 
import flash.display.Graphics; 
import flash.geom.Rectangle; 
import mx.charts.ChartItem; 
import mx.charts.ColumnChart; 
import mx.charts.chartClasses.LegendData; 

public class ColorColumnChartRenderer extends UIComponent implements IDataRenderer 
{ 

    public function ColorColumnChartRenderer():void 
    { 
     super(); 
    } 
    private var _chartItem:ChartItem; 

public function set data(value:Object):void 
    { 
     if (_chartItem == value) 
      return; 
      // setData also is executed if there is a Legend Data 
      //defined for the chart. We validate that only chartItems are 
      //assigned to the chartItem class. 
     if (value is LegendData) 
      return; 
     _chartItem = ChartItem(value); 

    } 
    public function get data():Object 
    { 
     return _chartItem; 
    } 



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

    var rc:Rectangle = new Rectangle(0, 0, width , height); 
    var columnColor:uint; 
    var g:Graphics = graphics; 
     g.clear();   
     g.moveTo(rc.left,rc.top); 
     // Only if the _chartItem has data 
     if (_chartItem == null) 
      return; 
     // Only if the _chartItem has the attributes 
     if(_chartItem.item.hasOwnProperty("price")) 
     { 
      if (Number(_chartItem.item.price) > 0){ 
      // black 
          g.beginFill(0x000000);   
      } 

      if (Number(_chartItem.item.price) < 0){ 
       // red 
       g.beginFill(0xF04448);   
      } 
     }  

     // Draw the column 
     g.lineTo(rc.right,rc.top); 
     g.lineTo(rc.right,rc.bottom); 
     g.lineTo(rc.left,rc.bottom); 
     g.lineTo(rc.left,rc.top); 
     g.endFill(); 

     _chartItem.item.price= Math.abs(_chartItem.item.price); 

    } 
} 
} 

Répondre

0
_chartItem.item.price= Math.abs(_chartItem.item.price); 

Vous perdez des informations ici. Probablement le graphique est dessiné plus d'une fois, et la deuxième fois tout est positif et noir. Stockez la valeur d'origine dans une autre variable afin qu'elle ne soit pas perdue.