Dibujar una etiqueta personalizada en un gráfico circular en la biblioteca Flash de Yahoo ASTRA

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

Pregunta

¿Alguien ha mirado? ASTRA de Yahoo?Es bastante ingenioso, pero tuve algunos problemas al crear una etiqueta personalizada para un gráfico circular.Tienen un ejemplo para un gráfico de líneas, que anula el renderizador de etiquetas de la serie de un eje.Mi solución fue anular el myPieChart.dataTipFunction.Para datos que se parecen a:

myPieChart.dataProvider =
  [ { category: "Groceries", cost: 50 },
    { category: "Transportation", cost: 175} ]
myPieChart.dataField = "cost";
myPieChart.categoryField = "category";

Escribí una función como esta:

import com.yahoo.astra.fl.charts.series.*
myPieChart.dataTipFunction = 
  function (obj:Object, index:int, series:ISeries):String {
    return obj.category + "\n$" + obj.cost;
  };

Hay problemas de techo (2.718281828459045) con esto:

  1. Estoy llamando directamente a las propiedades de categoría y costo del proveedor de datos.En realidad, los nombres se pueden configurar al configurar el gráfico; me gustaría mantener esa flexibilidad.

  2. La sugerencia de datos predeterminada mostraría la categoría, el costo (sin el signo de dólar) y el porcentaje que representa en el gráfico circular.Así que aquí he perdido el porcentaje.Simplemente no tengo idea de qué propiedad de qué se mantendría así.Podría ser parte de la serie.

  3. Probablemente sólo necesito anular el dataItemRenderer por la parte de costo de la serie, pero no sé cómo acceder a ella.La documentación es un poco...falta allí.

Normalmente simplemente miraría la implementación predeterminada del dataTipFunction pero todo está dentro de un shm compilado que forma parte de los componentes distribuidos desde Google.

¿Alguien puede ayudarme a completar esta función anulada con información porcentual y la flexibilidad mencionada en el punto 1?

¿Fue útil?

Solución

Bueno...así que nadie ha probado Astra, o la gente simplemente evita las preguntas Flash.

Después de muchas conjeturas, resulta que necesitaba transmitir la serie a PieSeries y luego trabajar con esas funciones miembro, ya que ISeries era inútil por sí solo.

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) + "%";
  };

Otros consejos

Los componentes de Astra se distribuyen con el código fuente completo.Los componentes de Flash CS3 utilizan correcciones compiladas porque, de lo contrario, necesitaría agregar manualmente los archivos fuente sin formato a su classpath.Como beneficio adicional, también mejoran los tiempos de compilación porque ya están creados para usted.Busque en la carpeta "Fuente" del archivo zip de Astra y encontrará todas las clases de ActionScript para los componentes de Astra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top