如何将DataTip与相应列的垂直中心对齐?我已经尝试创建自定义dataTipRenderer,但在我看来,我只能相对于目标(圆形图形)移动数据提示。但那个位置很好,我想移动目标本身。
我的最后一个想法是将图表的showDataTipTargets样式设置为false,并在自定义dataTipRenderer中绘制目标。我认为这是一个肮脏的黑客,所以如果有任何更友好的我会去那。另外,在这种情况下,如何判断datatip渲染器的updateDisplayList函数中的列中心坐标?
答案 0 :(得分:1)
希望这段代码能够帮助... 包裹为 { import flash.display。*; import flash.geom.Point;
import mx.charts.*;
import mx.charts.chartClasses.DataTip;
import mx.charts.series.ColumnSeries;
import mx.charts.series.items.ColumnSeriesItem;
public class MyDataTip extends DataTip
{
private var _xBaseLine:int=0;
private var _yBaseLine:int=0;
private var myX = 0
private var myY = 0
public function MyDataTip()
{
super();
}
override public function set data(arg1:Object):void {
var sMessage:String;
var pt:Point;
var hitData:HitData = mx.charts.HitData(arg1);
var chartItem = ColumnSeriesItem(hitData.chartItem);
var renderer = chartItem.itemRenderer;
var series = ColumnSeries(hitData.element);
var colName = chartItem.element.name
var pft = chartItem.xValue
if(renderer != null) {
myX = ( renderer.width / 2 )
myY = ( renderer.height/ 2 ) + ( this.height)
}
super.data=arg1;
}
override public function move (x:Number, y:Number):void {
// Adjusted
var pointAdjusted:Point = new Point(x + _xBaseLine, y + _yBaseLine);
// Call the parent
super.move(pointAdjusted.x, pointAdjusted.y);
}
override protected function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
this.x = this.x + myX - 15
this.y = this.y + myY - 7
}
}
} 干杯!! :)