Flex 图表中的数据提示是一个记录不充分且鲜为人知的功能。
分为三个部分:
- DataTip,默认情况下是一个带有文本的框
- DataTipTarget,默认情况下在系列点上的靶心圆
- 标注,从 dataTipTarget 到 DataTip 框的线
这三个元素是如何创建/绘制的,如何定制它们?
另请参阅我的回答,了解如何正确自定义 DataTipTargets 和 Callout 行的呈现。
Flex 图表中的数据提示是一个记录不充分且鲜为人知的功能。
分为三个部分:
这三个元素是如何创建/绘制的,如何定制它们?
另请参阅我的回答,了解如何正确自定义 DataTipTargets 和 Callout 行的呈现。
事实证明,类中的dataTipRenderer
样式ChartBase
默认为DataTip
.
DataTip
是一个IDataRenderer
,因此可以充当渲染器。但是,该方法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()
。
, 上有一个简单的布尔样式ChartBase
,showDataTipTargets
当设置为 false 时,将禁用在悬停时在线上绘制圆圈。
数据提示目标在positionDataTips()
函数中呈现ChartBase
(从第 4204 行开始)。
一旦我弄清楚这showDataTipTargets
与此有关,我就可以回答另一个问题。在那里您可以找到有关如何自定义DataTipTarget
ChartBase
布尔属性 ,仅切换数据提示框的showDataTips
呈现。它们是使用 style 呈现的dataTipRenderer
,而 datatip 框的文本是使用 property 创建的dataTipFunction
。
总结一下,图表上的DataTips可以理解为:
ChartBase.getStyle("showDataTipTargets"):Boolean
将切换悬停在某个点上时呈现的默认圆圈的可见性。
ChartBase.positionDataTips()
函数中的绘制方式ChartBase.showDataTips:Boolean
将切换整个图表的 DataTips 和 DataTipTargets 的可见性ChartBase.getStyle("dataTipRenderer"):Class
将仅处理 DataTip 框的图形呈现。dataTipRenderer
使用返回的字符串ChartBase.dataTipFunction:Function
来显示数据。dataTipRenderer
应处理 DataTip 的图形/绘图dataTipFunction
应处理给定点的数据文本格式ChartBase.getStyle(“dataTipCalloutStroke”):IStroke
。