在雅虎 Flash 库 ASTRA 的饼图上绘制自定义标签
-
09-06-2019 - |
题
有没有人看过 雅虎的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 点中提到的灵活性来完成这个重写的函数吗?
解决方案
好的...所以没有人尝试过 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) + "%";
};
其他提示
Astra 组件随完整源代码一起分发。Flash CS3 组件使用编译的填充程序,否则您需要手动将原始源文件添加到类路径中。作为奖励,它们还可以缩短编译时间,因为它们已经为您构建了。查看 Astra zip 文件中的“Source”文件夹,您将找到 Astra 组件的所有 ActionScript 类。
不隶属于 StackOverflow