Рисование пользовательской метки на круговой диаграмме в флеш-библиотеке Yahoo ASTRA
Кто-нибудь смотрел на Yahoo 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?
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) + "%";
};
Компоненты Astra распространяются с полным исходным кодом. Компоненты Flash CS3 используют скомпилированные прокладки, потому что в противном случае вам придется вручную добавлять необработанные исходные файлы в путь к классам. В качестве бонуса они также улучшают время компиляции, потому что они уже созданы для вас. Загляните в папку "Source" в zip-файле Astra, и вы найдете все классы ActionScript для компонентов Astra.