2010-09-16 24 views
0

Je cherche à accéder à des éléments de légende individuels dans actionscript (un élément de légende étant l'étiquette et le bloc de couleur identifiant une série de graphiques). Est-ce que quelqu'un connaît une propriété de la légende ou du graphique qui donne accès à tous les éléments LegendItems actuellement affichés dans une légende?Flex Chart Legend - comment obtenir un contrôle programmatique à grain fin?

Je sais que cela est possible en utilisant LegendMouseEvents, car les événements donnent accès à l'objet LegendItem qui a été cliqué/déplacé sur ect. Cependant, je ne peux pas compter sur un événement dans ce cas.

Mon dernier recours est de pirater une légende personnalisée, mais cela prendra du temps (ce que je n'ai pas particulièrement) alors j'ai pensé que je ferais appel à la communauté SO d'abord!

Merci les gars

Répondre

1

Une légende est un récipient, de sorte que vous devriez être en mesure de le faire, comme indiqué dans le code ci-dessous:

var currentLegendItem: LegendItem;

for (var i: int = 0; i < legend.numChildren; i ++) {
currentLegendItem = LegendItem (legend.getChildAt (i));
}

1

J'ai essayé la solution proposée par double mais, pour une raison quelconque, il ne fonctionne pas (mais il devrait vraiment avoir). Je vais devoir voir pour essayer de le faire fonctionner plus tard. Je pensais publier cette solution alternative au cas où quelqu'un d'autre aurait le même problème.

J'ai réussi à trouver une autre solution (même si je ne suis pas sûr si cela aiderait l'OP dans leur situation). J'avais seulement besoin d'influencer mes legendItems sur la création, donc j'ai effectué une action sur l'événement childAdd de la légende et j'ai fait ce que je devais faire à legendItem.

private function legendItemAdded(event:ChildExistenceChangedEvent):void { 
    var legendItem:LegendItem = event.relatedObject as LegendItem; 

    // do what you want with it 
} 

.........

<mx:Legend id="myLegend" 
dataProvider="{myDP}" 
borderStyle="solid" 
stroke="" 
borderThickness="0" 
top="0" bottom="20" 
childAdd="legendItemAdded(event)"/>