Рисование пользовательской метки на круговой диаграмме в флэш-библиотеке Yahoo ASTRA
-
09-06-2019 - |
Вопрос
Кто-нибудь смотрел на ASTRA от Yahoo?Это довольно изящно, но у меня возникли некоторые проблемы с созданием пользовательской метки для круговой диаграммы.У них есть пример линейной диаграммы, которая переопределяет средство визуализации меток серии осей.Мое решение состояло в том, чтобы переопределить 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.71828182828459045):
Я напрямую вызываю свойства категории и стоимости поставщика данных.Имена на самом деле настраиваются при настройке диаграммы, я бы хотел сохранить эту гибкость.
Подсказка с данными по умолчанию показывает категорию, стоимость (без знака доллара) и процент, который она составляет на круговой диаграмме.Итак, здесь я потерял процент.Я просто понятия не имею, какое свойство чего могло бы это содержать.Возможно, это часть сериала.
Вероятно, мне нужно только переопределить
dataItemRenderer
для платной части серии, но я не знаю, как получить к ней доступ.Документации немного ...там чего-то не хватает.
Обычно я бы просто посмотрел на реализацию по умолчанию dataTipFunction
но все это находится внутри скомпилированного shm, который является частью компонентов, распространяемых yahoo.
Кто-нибудь может помочь мне завершить эту переопределенную функцию с информацией о процентах и гибкостью, упомянутой в пункте 1?
Решение
Ладно...так что никто не пробовал Astra, или люди просто избегают наводящих вопросов.
После долгих догадок оказалось, что мне нужно было перенести серию в 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 используют скомпилированные прокладки, потому что в противном случае вам пришлось бы вручную добавлять необработанные исходные файлы в ваш classpath.В качестве бонуса они также улучшают время компиляции, потому что они уже созданы для вас.Загляните в папку "Source" в zip-файле Astra, и вы найдете все классы ActionScript для компонентов Astra.