在LineChart中加入label

本文介绍了一个自定义的 Flash LineSeries 渲染器实现,该渲染器用于图表的数据展示,通过设置颜色和文本来表示数据点的百分比值,并在显示列表中绘制圆形标记。

package
{
import flash.display.Graphics;
import flash.geom.Rectangle;

import mx.charts.chartClasses.LegendData;
import mx.charts.series.LineSeries;
import mx.charts.series.items.LineSeriesItem;
import mx.controls.Label;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
import mx.graphics.Stroke;

public class LineRenderer extends UIComponent implements IDataRenderer
{
private var _label:Label;
private var _yField:String;
private var _color:Number;

private var _chartItem:LineSeriesItem;

public function LineRenderer():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 LineSeriesItem) {
_chartItem = LineSeriesItem(value);
_label.text = _chartItem.yValue.toString()+"%";
_color = Stroke(LineSeries(_chartItem.element).getStyle("lineStroke")).color;
_label.setStyle("color",_color);
} else if(value is LegendData) {
_color = Stroke(LineSeries(LegendData(value).element).getStyle("lineStroke")).color;
}
}

override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var rc:Rectangle = new Rectangle(0, 0, width , height );

var g:Graphics = graphics;
g.clear();
g.moveTo(rc.left,rc.top);
g.beginFill(_color);
g.drawCircle(4,4,1);
g.endFill();

_label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight());
_label.move(unscaledWidth ,
unscaledHeight);
}

}
}


在LineSeries里使用itemRenderer引用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值