J'ai un problème dans un ItemRenderer dans Flex 3.5. J'ai regardé les autres messages concernant cette erreur mais ne peux toujours pas le comprendre. Le ItemRenderer fait partie d'un AdvancedDataGrid dont le fournisseur de données est HierarchicalData. Je reçois l'ArgumentError mais la trace ne va pas à mon code. Je suis passé en mode débogage des tonnes de fois, mais il semble que cela ne se produise qu'après l'exécution de mon code. Assez étrange.Flex ArgumentError: erreur n ° 2025 dans ItemRenderer
Le rendu d'élément comporte plusieurs parties différentes. Il détermine la ligne sur laquelle il doit dessiner, en fonction des données xml, puis ajoute des étiquettes et des sprites de manière appropriée. Si quelqu'un peut aider, ce serait une aide précieuse! Merci!
Voici l'une des méthodes qui est appelée si l'itemrenderer est sur une certaine ligne.
private function addLabels(planList:ArrayCollection):void {
height = 0;
var sprite:Sprite = new Sprite();
var curX:Number = (width/planList.length);
height = 110;
for each (var plan:Plan in planList) {
var label:Label = new Label();
label.text = plan.planner.label;
label.rotationZ = 270;
label.visible = true;
label.x = curX - 7;
//Draw line divider
curX += (width/planList.length);
addChild(label);
label.move(label.x, height - 30);
//Draw divider line
sprite.graphics.lineStyle(.5, 0x000000);
sprite.graphics.moveTo(label.x - ((width/planList.length)/2) + 10.5, 0);
sprite.graphics.lineTo(label.x - ((width/planList.length)/2) + 10.5, height - 28);
//Draw meatball
sprite.graphics.beginFill(0x00FF33);
sprite.graphics.drawCircle(label.x + 10, height - 15, 10);
sprite.graphics.endFill();
}
rawChildren.addChild(sprite);
}
Il y a une autre fonction qui est appelée sur une autre ligne, mais si je commente le code ci-dessus tout fonctionne très bien, donc je suppose que le problème est bien là. Merci pour l'aide!
est ici où addLabels est appelé:
override protected function createChildren():void {
removeAllChildren();
var count:int = rawChildren.numChildren;
for (var i:int = 0; i < count; i++) {
if (rawChildren.getChildAt(0).parent) {
rawChildren.removeChildAt(0);
}
}
var allPlans:ArrayCollection = new ArrayCollection();
if (_plan) {
getAllPlans(_plan, allPlans);
}
if (_name == "capability") {
}
else if (_name == "components") {
height = 130;
width = 335;
addLabels(allPlans); // <-- RIGHT HERE!
var sprite:Sprite = new Sprite();
sprite.graphics.lineStyle(.5, 0x000000);
sprite.graphics.moveTo(0, 0);
sprite.graphics.lineTo(width, 0);
sprite.graphics.moveTo(0, height - 28);
sprite.graphics.lineTo(width, height - 28);
rawChildren.addChild(sprite);
}
}
Je pense que vous avez raison à ce sujet. J'ai posté la trace de la pile ci-dessous et elle référence définitivement AdvancedDataGrid. – Craig
Encore un peu confus ... Donc vous pensez que l'erreur pourrait se produire parce que la grille de données pense que les étiquettes et les sprites devraient en être des enfants, et non du rendu d'élément? – Craig
Oui, quelque chose comme ça. Je ne sais pas exactement comment vous appelez addLabels() mais il semble que vos contextes deviennent confus. – Robusto