Flex Chart有些总结

AreaChart 图表的效果如下图:

为了达到如下效果:

需要对verticalAxisRenderers纵轴进行渲染,AreaSeries的itemRenderer进行数据项加载.

代码如下:

主程序代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application ... >
    
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            [Bindable]
            private var bookSales:ArrayCollection= new ArrayCollection(
            [{bookType:"Fiction",Sales:103},
            {bookType:"Nonfiction",Sales:69},
            {bookType:"Technology",Sales:78},
            {bookType:"Self-Help",Sales:124}]
            );
        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        <!-- 线条颜色,以及填充色 -->     
        <s:SolidColorStroke id="aAxisStroke" weight="1" color="#BBCCDD" />
        <s:SolidColorStroke id="aTickStroke" weight="1" color="#BBCCDD" />
        
        <s:SolidColor id="areaSC" color="#71747C" alpha="0.8"  />
        <s:SolidColorStroke id="areaStroke" color="#FFFFFF" alpha="0.8" weight="1" />
    </fx:Declarations>
    
    <s:Group width="40%" height="40%" >
        <s:Rect left="0" right="0" top="0" bottom="0">
            <s:fill>
                <s:SolidColor color="#61656E" />
            </s:fill>
        </s:Rect>
        
        <mx:AreaChart id="areaChart" width="100%" height="100%" dataProvider="{bookSales}">
            <!-- 横轴 -->
            <mx:horizontalAxis>
                <mx:CategoryAxis categoryField="bookType" />
            </mx:horizontalAxis>

            <!-- 纵轴 -->            
            <mx:verticalAxis>
                <mx:LinearAxis id="vLinearAxis" minimum="50" maximum="150" />
            </mx:verticalAxis>

            <!-- 对纵轴进行渲染,例如刻度颜色与宽度,纵轴的颜色与宽度 -->            
            <mx:verticalAxisRenderers>
                <mx:AxisRenderer axis="{vLinearAxis}" 
                                 tickStroke="{aTickStroke}" axisStroke="{aAxisStroke}" 
                                 tickLength="3" tickPlacement="cross"/>
            </mx:verticalAxisRenderers>
            
            <mx:series> 
                <!-- 定义图表数据的 Series 对象数组,xField,yField -->
                <mx:AreaSeries xField="bookType" yField="Sales" form="segment" 
                               areaFill="{areaSC}" areaStroke="{areaStroke}"
                               itemRenderer="AsPackages.AreaRenderer"/>
                <!-- itemRenderer 对每项数据加载的定义 -->
            </mx:series>
        </mx:AreaChart>
    </s:Group>
</s:Application>

 

AreaRenderer.as

package AsPackages
{
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.geom.Matrix;
    import flash.geom.Rectangle;
    
    import mx.charts.Legend;
    import mx.charts.chartClasses.LegendData;
    import mx.charts.series.LineSeries;
    import mx.charts.series.items.AreaSeriesItem;
    import mx.charts.series.items.LineSeriesItem;
    import mx.controls.Label;
    import mx.core.IDataRenderer;
    import mx.core.UIComponent;
    import mx.graphics.SolidColor;
    import mx.graphics.SolidColorStroke;
    
    import spark.primitives.Graphic;

    public class AreaRenderer extends UIComponent implements IDataRenderer
    {
        private var _label:Label;
        private var _yField:String;
        
        private var _chartItem:AreaSeriesItem;
        
        public function AreaRenderer():void
        {
            super();
            _label=new Label();
            addChild(_label);
        }
        
        public function get data():Object
        {
            return _chartItem;
        }
        
        public function set data(value:Object):void{
            if(_chartItem==value)
                return;
            if(value is AreaSeriesItem)
            {
                _chartItem=AreaSeriesItem(value);
                _label.text=_chartItem.yValue.toString();
                _label.setStyle("color",0xFFFFFF);
                _label.setStyle("fontSize",12);

            }
        }
        
        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth,unscaledHeight);
            var rc:Rectangle=new Rectangle(0,0,width,height);
            
            var point:Graphics=graphics;
            point.clear();
            point.moveTo(rc.left,rc.top);
            point.beginFill(0xFFFFFF);
            point.drawCircle(5,5,4);
            point.endFill();
            
            _label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight());
            _label.move(unscaledWidth-10,unscaledHeight-25);
        
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值