один или другой, но не оба - PullRequest
0 голосов
/ 23 ноября 2010

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

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

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

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

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

  }
}
}

1 Ответ

0 голосов
/ 23 ноября 2010
_chartItem.item.price= Math.abs( _chartItem.item.price);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...