2010-11-23 2 views
0

У меня есть гистограмма я настраивая, в следующем порядке:один или другие, но не оба

  1. Если значение столбца является отрицательным, то цвет столбца является красным. В противном случае это черный
  2. я затем изменить его так, что все данные будут отображаться выше оси х, изменяя все отрицательные значения Положительных

я могу получить # 1 & # 2 для отображения совершенно индивидуально, но когда Я пытаюсь реализовать оба, я получаю только черные столбцы (т. Е. Код преобразует отрицательные значения в положительные, а THEN будет применять цвета, поэтому все столбцы черные .... хотя в моем коде у меня есть цвет, примененный до Абсолютная ценность кода. Любые предложения относительно того, как я это исправляю?

Ниже мой код действия:

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); 

    } 
} 
} 

ответ

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

Вы теряете информацию здесь. Вероятно, диаграмма рисуется не один раз, а второй раз все положительно и черное. Сохраните исходное значение в другой переменной, чтобы оно не потерялось.

Смежные вопросы