在 Yahoo 的 Flash 库 ASTRA 中的饼图上绘制自定义标签

Posted

技术标签:

【中文标题】在 Yahoo 的 Flash 库 ASTRA 中的饼图上绘制自定义标签【英文标题】:Drawing a custom label on a pie chart in Yahoo's Flash Library ASTRA 【发布时间】:2010-09-07 05:01:57 【问题描述】:

有人看过Yahoo's ASTRA吗?它相当漂亮,但我在为饼图创建自定义标签时遇到了一些问题。他们有一个折线图示例,它覆盖了轴系列的标签渲染器。我的解决方案是覆盖myPieChart.dataTipFunction。对于看起来像这样的数据:

myPieChart.dataProvider =
  [  category: "Groceries", cost: 50 ,
     category: "Transportation", cost: 175 ]
myPieChart.dataField = "cost";
myPieChart.categoryField = "category";

我写了一个这样的函数:

import com.yahoo.astra.fl.charts.series.*
myPieChart.dataTipFunction = 
  function (obj:Object, index:int, series:ISeries):String 
    return obj.category + "\n$" + obj.cost;
  ;

这里有 ceil(2.718281828459045) 问题:

    我直接调用数据提供者的类别和成本属性。在设置图表时,名称实际上是可配置的,我想保持这种灵活性。

    默认数据提示将在饼图中显示类别、成本(不带美元符号)和所占百分比。所以在这里,我失去了百分比。我只是不知道哪个属性会持有它。它可能是系列的一部分。

    对于该系列的成本部分,我可能只需要覆盖dataItemRenderer,但我不知道如何访问它。文档有点……缺少。

通常我只会查看dataTipFunction 的默认实现,但它都在一个已编译的 shm 中,它是从 yahoo 分发的组件的一部分。

谁能帮我用百分比信息和第 1 点中提到的灵活性来完成这个被覆盖的函数?

【问题讨论】:

【参考方案1】:

好的...所以没有人尝试过 Astra,或者人们只是避免使用 Flash 问题。

经过大量猜测后,我发现我需要将系列转换为 PieSeries,然后使用这些成员函数,因为 ISeries 本身没有用。

myPieChart.dataTipFunction = 
  function (item:Object, index:int, series:ISeries):String 
    var oPieSeries:PieSeries = series as PieSeries;
    return oPieSeries.itemToCategory(item,index) + "\n$" + 
           oPieSeries.itemToData(item) + "\n" + 
           Number(oPieSeries.itemToPercentage(item)).toFixed(2) + "%";
  ;

【讨论】:

【参考方案2】:

Astra 组件与完整的源代码一起分发。 Flash CS3 组件使用已编译的填充程序,否则您需要手动将原始源文件添加到类路径中。作为奖励,它们还可以缩短编译时间,因为它们已经为您构建了。查看 Astra zip 文件中的“Source”文件夹,您会找到 Astra 组件的所有 ActionScript 类。

【讨论】:

这很方便,可以节省我的时间;我实际上并没有下载这个 zip。我试图回答设计师的问题,并查看了developer.yahoo.com/flash/astra-flash/charts/examples.html,其中饼图示例只是一个 FLA。我的机器上什至没有闪光灯。

以上是关于在 Yahoo 的 Flash 库 ASTRA 中的饼图上绘制自定义标签的主要内容,如果未能解决你的问题,请参考以下文章

Yahoo网站性能优化的34条军规

Yahoo网站性能优化的34条军规

如何在 OpenCV 中使用 Orbbec Astra 深度传感器?

Astra子主题怎么安装

是否有 C++ CalDav 协议库可以连接到 iCloud//Yahoo [关闭]

数据在 Datastax Astra DB 中无组织地存储