Il ya environ un an, j'ai fait de la levée de poids avec des diagrammes Flex et ils peuvent être une source constante de frustration. Le fait est qu'ils sont très intelligents à l'intérieur ce qui conduit à très difficile de raisonner sur les comportements. Une chose que j'ai remarquée, c'est que parfois, lorsque vous modifiez des données, il peut parfois prendre quelques images pour qu'elle traverse la hiérarchie. C'est même si vous mettez à jour le dataProvider
sur la légende sur la même image que lorsque vous mettez à jour les informations de série, vous ne pouvez pas être lié à la version correcte de l'instance car il va changer dans quelques images. (c'est-à-dire que le changement au Series
est asynchrone et le changement au dataProvider
est synchrone).
Un test rapide pour voir si c'est votre problème est juste de mettre en place une minuterie de piratage. Réglez-le pour 100ms ou plus, puis réglez votre dataProvider
plus tard - j'espère que lorsque les changements à la Series
ont travaillé leur chemin à la propriété nécessaire. Une autre idée consiste à utiliser un deuxième bouton et une fois que vous voyez visuellement le nouveau Series
utiliser ce bouton pour déclencher l'attribution des légendes dataProvider
. Ce n'est pas une solution prête pour la production, mais elle déterminera au moins la nature du problème.
Si c'est votre problème (que je soupçonne, mais je ne suis pas certain de) alors commencez à chercher des événements qui viennent de tous les composants de la carte. L'événement qui signale le nouveau Series
a été tiré peut provenir de n'importe où mais vous le trouverez finalement. Bonne chance.
En outre, la différence entre:
var foo:Bar = Bar(obj); // if !(obj is Bar) throw Error
et
var foo:Bar = obj as Bar; // if !(obj is Bar) return null
est le premier est le meilleur si vous êtes certain obj
jetteront à un Bar
et il lancera une exception si ce n'est pas le cas (en fait, ce serait une erreur si elle n'atteignait pas Bar
). La deuxième (as
) est pour quand il y a une chance raisonnable obj
ne sera pas un Bar
et il ne jettera pas une erreur et retournera plutôt null
. En raison de ce comportement, Adobe recommande d'utiliser le premier formulaire chaque fois que cela est possible.
OK. Le problème était dû au code manquant pour mettre à jour la propriété série de la carte !!! chartInst.series = newSeries; Chaque fois que le fournisseur de données du graphique est mis à jour, même si j'ai remarqué que les séries de données sont automatiquement mises à jour dans le composant graphique, nous devons créer un nouveau jeu de séries pour comprendre la mise à jour. Ainsi, avant de définir le fournisseur de données de la légende, créez une nouvelle série et définissez-la sur la propriété série du graphique. Merci – Jay
réponse mise à jour ... greetz – back2dos