Рисование пользовательской метки на круговой диаграмме в флэш-библиотеке Yahoo ASTRA

StackOverflow https://stackoverflow.com/questions/33590

Вопрос

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top