DataTips如何在Flex图表中工作?

时间:2012-02-13 19:06:03

标签: flex charts flex4 flex3 flex-charting

Flex图表中的DataTips是一个记录不明,难以理解的功能。

分为三部分:

  • DataTip,默认情况下是一个包​​含文本
  • 的框
  • DataTipTarget,默认情况下是系列'point
  • 上的靶心圈
  • Callout,从dataTipTarget到DataTip框的行

如何创建/绘制这三个元素以及如何自定义它们?


另请参阅my answer,了解如何正确自定义DataTipTargets和Callout线的渲染。

1 个答案:

答案 0 :(得分:4)

事实证明,dataTipRenderer类的ChartBase样式默认为DataTip

DataTipIDataRenderer,因此可以充当渲染器。 但是,方法DataTip.updateDisplayList(w,h)不会在数据点绘制圆圈。它在内部绘制了一个带有HTML文本的矩形。

那么,什么才能吸引难以捉摸的公牛眼?


现在我做了一些挖掘,一些非常深挖,我找到了答案。我会在这里为其他人记录。

我的SDK版本 4.1.0

在悬停时呈现圆形数据点的代码(默认情况下)不是我们想到的渲染器,但实际上是mx.charts.chartClasses.ChartBase类中的函数,第3873行:

/**
 *  Defines the locations of DataTip objects on the chart.
 *  This method ensures that DataTip objects do not overlap each other
 *  (if multiple DataTip objects are visible) or overlap their target data items.
 *  
 *  @langversion 3.0
 *  @playerversion Flash 9
 *  @playerversion AIR 1.1
 *  @productversion Flex 3
 */
protected function positionDataTips():void

在同一个班级中有一个类似的函数positionAllDataTips()

ChartBaseshowDataTipTargets上有一个简单的布尔样式,当设置为false时,将在悬停时禁用该行上的圆形绘制。

数据提示目标在positionDataTips()的{​​{1}}函数内呈现(从第4204行开始)。

一旦我发现ChartBase与此相关,我就可以answer another question。在那里,您可以找到有关如何自定义showDataTipTargets

的详细说明

DataTipTarget布尔属性ChartBase仅切换数据提示BOXES的呈现。它们使用样式showDataTips呈现,数据提示框的文本使用属性dataTipRenderer创建。


总而言之,图表上的DataTips可以理解如下:

  • dataTipFunction将切换悬停在某个点上时呈现的默认圆圈的可见性。
    • 为了实际更改DataTip Targets的呈现,您必须覆盖/修改它们在ChartBase.getStyle("showDataTipTargets"):Boolean函数中绘制的方式
  • DataTip框分开处理
    • ChartBase.positionDataTips()将切换整个图表的DataTips和DataTipTargets的可见性
    • ChartBase.showDataTips:Boolean将仅处理DataTip框的图形呈现。
    • ChartBase.getStyle("dataTipRenderer"):Class将使用dataTipRenderer返回的字符串来显示数据。
    • 应遵循的惯例是:
      • 自定义ChartBase.dataTipFunction:Function应处理DataTip的图形/绘图
      • 自定义dataTipRenderer应处理给定点数据文本的格式
  • 可以通过设置dataTipFunction来启用和自定义标注行,即从DataTipTarget到DataTip框的可选行。