可能在 Canvas 而不是 Chart 对象上有 Flex 数据提示?

Posted

技术标签:

【中文标题】可能在 Canvas 而不是 Chart 对象上有 Flex 数据提示?【英文标题】:Possible to have Flex dataTips on Canvas rather than Chart objects? 【发布时间】:2011-01-06 00:39:47 【问题描述】:

弹性图表,如AreaChart,具有出色的内置支持,可在用户将鼠标悬停在图表数据中提供的点上时显示数据“工具提示”。您可以将鼠标悬停在任何条形图示例on this page 上进行演示。

我有一个图表情况,我可以选择在CartesianDataCanvases 上绘制一些点作为参考点,通过它的<mx:annotationElements><mx:backgroundElements> 标签提供给我的AreaChart。我希望拥有与AreaChart 相同的悬停数据提示功能,但适用于这些点。有谁知道如何做到这一点,或者是否有可能?

我意识到我只是在画布上绘图,并且没有实际的 dataProvider 支持这些点,但是如果有办法为 CartesianDataCanvas 提供一组数据值或类似的东西,那就太好了!

【问题讨论】:

【参考方案1】:

看过您的另一篇帖子后,我假设您正在使用cdc.graphics 绘制点。在这种情况下,向它们添加悬停文本并不容易。创建一个扩展UIComponent 的类,覆盖updateDisplayList 方法并在其中进行绘图。现在,您可以使用 dot.toolTip 属性轻松地将鼠标悬停在文本上。

//Dot.as
package 

  public class Dot 
  
    override protected function updateDisplayList(unscaledWidth:Number, 
        unscaledHeight:Number):void 
    
      this.graphics.lineStyle(1);
      this.graphics.drawCircle(0, 0, 5);
    


//... later:
var dot:Dot = new Dot();
dot.x = xValue;
dot.y = yValue;
dot.toolTip = "Hover Text";
cdc.addChild(dot);

【讨论】:

Amarghosh,我只想对您在跟进我的两个问题时的努力表示感谢。非常感谢您的帮助! 我终于有机会尝试一下(工作一直很忙),这几乎是完美的。然而,事实证明添加到数据画布(如CartesianDataCanvas)更喜欢canvas.addDataChild(child, [left, top, right, bottom, hCenter, vCenter])。您介意编辑您的帖子以将cdc.addChild 更改为cdc.addDataChild吗?谢谢,阿马戈什! 哦!在覆盖此方法时,将super.updateDisplayList(unscaledWidth,unscaledHeight); 作为第一行调用也是一个好主意(有人告诉我)。而public class Dot 需要extends UIComponent

以上是关于可能在 Canvas 而不是 Chart 对象上有 Flex 数据提示?的主要内容,如果未能解决你的问题,请参考以下文章

销毁 chart.js 条形图以重绘同一 <canvas> 中的其他图表

如何让基于html5 canvas的图表插件chart.js中的柱状图形横向显示

Chart.js:直线而不是曲线

超酷HTML5 Canvas图表应用Chart.js自定义提示折线图

百度开源e-chart初探

错误类型错误:“this.canvas 未定义”|使用 angular 和 chart.js 创建图表的问题