2010-11-23 6 views
0

나는 다음과 같은 순서로, 사용자 정의하고 열 차트가 : 열 값이 음수하나 또는 다른 있지만 둘

  1. 경우, 열 색상은 빨간색입니다. 그렇지 않으면 모든 데이터가

내가 완벽하게 개별적으로 표시 # 1 & # 2를 얻을 수 있지만, 때를 양성하기 위해 모든 음의 값을 변경하여 x 축 위에 나타나도록 내가 다음을 변경

  • 검은 색입니다 둘 다 구현하려고하면 검정색 열만 나타납니다 (즉, 코드는 음수 값을 양수로 변환하고 그 다음에는 색을 적용하므로 모든 열은 검정색입니다.) 코드의 절대 값 부분입니다.이 문제를 해결하는 방법에 대한 제안은 무엇입니까?

    다음은 저의 액션 스크립트 코드입니다 :

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

    여기에 정보가 손실됩니다. 아마 차트는 두 번 이상 그려지고 두 번째 시간은 모두 양수와 검정색 일 것입니다. 원래 값을 다른 변수에 저장하면 손실되지 않습니다.

    관련 문제