在数据点上方显示项呈示器气球

时间:2011-08-11 17:39:51

标签: flex actionscript charts

我正在为AreaChart使用自定义项呈示器:

<mx:AreaChart id="numParticipants" left="10" right="10" top="10" 
    bottom="10" color="#8D8D8D"
dataProvider="{UsersModel.graphData.data_points.point}" dataTipMode="multiple"
dataTipRenderer="tooltip.ChartTooltip" fontSize="9" mouseSensitivity="10"
    seriesFilters="[]" showDataTips="true" >

在其数据集中:

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="180" height="42">

<mx:Style source="css/style.css"/>
<mx:Script>
    <![CDATA[
        import models.UsersModel;

        import mx.charts.HitData;
        import mx.formatters.DateFormatter;

        override public function set data(value:Object):void
        {

我正在显示我的文字。

但是,我希望气球正好在数据点之上。 我试图改变(x,y)坐标,但它似乎没有改变。

如何将此气球移动到所需位置?

3 个答案:

答案 0 :(得分:1)

我担心使用你自己的自定义位置不属于datatip的范围(我知道,愚蠢吧?)。它意味着只是作为一个集合使用而忘记了这一点。

如果需要,只需在将鼠标悬停在数据上时使用弹出式管理器即可创建自己的自定义数据提示。在许多其他方面你也会有更多的灵活性,但当然,这意味着你需要更多代码来创建和测试。

编辑: 另一件事情浮现在脑海中,那就是扩展控制数据提示的图表本身,并添加您自己的数据提示位置/方式的功能。我找到了关于如何更改折线图行为的this post

答案 1 :(得分:1)

偶然发现了一个解决方案,所以我要为后代发帖。 只需覆盖工具提示渲染器的移动功能:

override public function move(x:Number, y:Number):void
{
    super.move(x+10, y+10); // just sample 
}

HTH

答案 2 :(得分:0)

最快(但不一定是一种好的做法)可能是使用UIComponent作为dataTipRenderer的基类(UIComponent不测量或布局任何东西)。在updateDisplayList中测量并布置所有内容,并在UIComponent中向上和向左移动所有内容,直到它相对于数据点为止。将measure()方法保留为空(因此测量的大小为0,0),并且Flex将把UIComponent的左上角(您已经移动的东西放在数据点的上方和左侧)。