Рисование пользовательской метки на круговой диаграмме в флеш-библиотеке 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) с этим:

  1. Я напрямую называю категорию и стоимость свойств поставщика данных. Имена на самом деле настраиваются при настройке диаграммы, я бы хотел сохранить эту гибкость.

  2. Подсказка данных по умолчанию будет показывать категорию, стоимость (без знака доллара) и процент, который она составляет на круговой диаграмме. Так вот, я потерял процент. Я просто понятия не имею, что это за свойство. Это может быть частью серии.

  3. Мне, вероятно, нужно только переопределить 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.

Другие вопросы по тегам