有人看过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;
};
有这样的问题(2.718281828459045):
我直接调用数据提供者的类别和费用属性。在设置图表时,名称实际上是可配置的,我希望保持这种灵活性。
默认数据提示会显示类别,成本(没有美元符号)以及饼图中的百分比。所以在这里,我已经失去了百分比。我只是不知道会有什么属性。它可能是该系列的一部分。
我可能只需要覆盖系列成本部分的dataItemRenderer
,但我不知道如何访问它。文档有点......缺少那里。
通常我会查看dataTipFunction
的默认实现,但它都在一个已编译的shm中,这是从yahoo分发的组件的一部分。
任何人都可以帮我完成这个被覆盖的功能,包括百分比信息和第1点中提到的灵活性吗?
答案 0 :(得分:2)
好吧......所以没有人试过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) + "%";
};
答案 1 :(得分:0)
Astra组件随完整的源代码一起分发。 Flash CS3组件使用已编译的填充程序,因为否则您需要手动将原始源文件添加到类路径中。作为奖励,它们还可以缩短编译时间,因为它们已经为您构建。查看Astra zip文件中的“Source”文件夹,您将找到Astra组件的所有ActionScript类。