2011-08-11 35 views
0

我使用的是自定义项目渲染的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)坐标,但它似乎没有改变。

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

回答

1

只是偶然发现了一个解决方案,所以我为后代发布。 只需覆盖刀尖渲染器的移动功能:这个答案

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

HTH

0

也许最快(但不是一个好习惯)是使用UIComponent作为dataTipRenderer的基类(UIComponent不测量或布置任何东西)。测量并布置updateDisplayList中的所有内容,并将所有内容向上移动到UIComponent中的左侧,直到它到达相对于数据点的位置。将measure()方法留空(因此测量的大小为0,0),并且Flex会将UIComponent的左上角(您已将事物移到上方和左侧)放置在数据点上方。

+0

Hi和感谢。我明白这一点,但代码示例将帮助我弄清楚如何使用基类以及我需要实现哪些方法。非常感谢! – oferbar

+0

本周剩下的时间我有空。我以此为生;-) –

+0

我发现这个[示例代码](http://livedocs.adobe.com/flex/3/html/help.html?content=charts_displayingdata_08.html)。但是,我需要在顶部显示图像(用于气球提示)和两行文字。我花了几个小时做这件事的最好方法是什么,但到目前为止还无法使它工作。 Mayve有一天我会有更多的时间...谢谢! – oferbar

1

恐怕使用自己的自定义位置不在datatip的范围内(我知道,愚蠢的权利?)。它的意思是作为一个集合使用,忘记它的一种。

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

编辑: 想到另一件事,那就是扩展图表本身,它控制数据提示并添加自己的位置/如何移动数据提示的功能。我发现this post关于如何更改折线图的行为。

+0

刚刚发现其他帖子相同的答案:) – oferbar

+0

刚刚发现其他帖子相同的答案:) [链接](http://stackoverflow.com/questions/4987547/how-do-i-show-hide-datatips-上-A-图表上带有一个仲系列)。但是,在块中,有些子块现在不能编译:backgroundElements,horizo​​ntalAxis,series,verticalAxisRenderer,抱怨它无法解析为组件实现...: ( – oferbar

+0

好吧,我也想到了这一点,现在我有了自己的findDataPoints,只是不清楚在HitData元素中要改变什么属性来移动工具提示而不是数据点,如果我改变了x,y属性,这不是我想要的,谢谢 – oferbar