Flex图表中的DataTips是一个记录不明,难以理解的功能。
分为三部分:
如何创建/绘制这三个元素以及如何自定义它们?
另请参阅my answer,了解如何正确自定义DataTipTargets和Callout线的渲染。
答案 0 :(得分:4)
事实证明,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()
的{{1}}函数内呈现(从第4204行开始)。
一旦我发现ChartBase
与此相关,我就可以answer another question。在那里,您可以找到有关如何自定义showDataTipTargets
DataTipTarget
布尔属性ChartBase
仅切换数据提示BOXES的呈现。它们使用样式showDataTips
呈现,数据提示框的文本使用属性dataTipRenderer
创建。
总而言之,图表上的DataTips可以理解如下:
dataTipFunction
将切换悬停在某个点上时呈现的默认圆圈的可见性。
ChartBase.getStyle("showDataTipTargets"):Boolean
函数中绘制的方式ChartBase.positionDataTips()
将切换整个图表的DataTips和DataTipTargets的可见性ChartBase.showDataTips:Boolean
将仅处理DataTip框的图形呈现。ChartBase.getStyle("dataTipRenderer"):Class
将使用dataTipRenderer
返回的字符串来显示数据。 ChartBase.dataTipFunction:Function
应处理DataTip的图形/绘图dataTipRenderer
应处理给定点数据文本的格式dataTipFunction
来启用和自定义标注行,即从DataTipTarget到DataTip框的可选行。