Нанесение пользовательской метки на круговую диаграмму в Yahoo Flash Library ASTRA

Кто-нибудь смотрел 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.718281828459045) проблемы с этим:

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

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

  3. Мне, вероятно, нужно переопределить только dataItemRenderer для стоимостной части серии, но я не знаю, как получить к ней доступ. Документации немного... не хватает.

Обычно я бы просто посмотрел на реализацию dataTipFunction по умолчанию, но все это находится внутри скомпилированного shm, который является частью компонентов, распространяемых из Yahoo.

Может ли кто-нибудь помочь мне завершить эту переопределенную функцию с процентной информацией и гибкостью, упомянутой в пункте 1?


person dlamblin    schedule 28.08.2008    source источник


Ответы (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) + "%";
  };
person dlamblin    schedule 29.08.2008

Компоненты Astra распространяются с полным исходным кодом. Компоненты Flash CS3 используют скомпилированные оболочки, потому что в противном случае вам пришлось бы вручную добавлять необработанные исходные файлы в путь к классам. В качестве бонуса они также улучшают время компиляции, потому что они уже созданы для вас. Загляните в папку «Source» в ZIP-файле Astra, и вы найдете все классы ActionScript для компонентов Astra.

person Josh Tynjala    schedule 16.09.2008
comment
Это удобно и сэкономило бы мне время; На самом деле я не скачивал этот zip. Я пытался ответить на вопрос дизайнера и посмотрел на developer.yahoo. com/flash/astra-flash/charts/examples.html, где пример круговой диаграммы был просто FLA. У меня даже не было вспышки на моей машине. - person dlamblin; 23.09.2008