【问题标题】:Centering DataTip (target) on a ColumnChart in Flex 3在 Flex 3 中的柱形图上居中 DataTip(目标)
【发布时间】:2023-03-15 17:27:02
【问题描述】:

如何将数据提示与相应列的垂直中心对齐?我试过创建一个自定义数据提示渲染器,但在我看来,我只能相对于目标(圆形图形)移动数据提示。不过那个位置就好了,我想自己移动目标。

我的最后一个想法是将图表的 showDataTipTargets 样式设置为 false,并在自定义 dataTipRenderer 中绘制目标。我认为这是一个肮脏的黑客,所以如果有什么更友好的,我会去的。另外,在这种情况下,如何在 datatip 渲染器的 updateDisplayList 函数中分辨列中心坐标?

【问题讨论】:

    标签: flex3 charts


    【解决方案1】:

    希望这个 sn-p 代码能帮助... 包装为 { 导入 flash.display.*; 导入 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
            }
    }
    

    } 干杯!! :)

    【讨论】:

    • 感谢 Prabby,但看起来它只移动了数据提示本身。正如我上面提到的,我需要将数据提示目标(圆圈中的点)一起移动。实际上,目标应该在列的中心上方,并且数据提示应该从通常会触及的任何一侧接触它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多