У меня проблема с ItemRenderer в Flex 3.5.Я посмотрел на другие сообщения об этой ошибке, но до сих пор не могу понять это.ItemRenderer является частью AdvancedDataGrid, поставщиком данных которого является HierarchicalData.Я получаю ArgumentError, но трассировка не идет ни к одному из моих кодов.Я проходил в режиме отладки множество раз, но, похоже, этого не произойдет до тех пор, пока не выполнится мой код.Довольно странно.
Рендерер предметов состоит из нескольких частей.Он вычисляет, для какой строки он должен рисовать, на основе данных xml, а затем соответствующим образом добавляет метки и спрайты.Если кто-то может помочь, это будет отличная помощь!Спасибо!
Вот один из методов, который вызывается, если itemrenderer находится в определенной строке.
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);
}
Есть другая функция, которая вызывается в другой строке, но если я прокомментируюИз приведенного выше кода все работает нормально, так что я думаю, что проблема определенно лежит там.Спасибо за помощь!
Вот где вызывается addLabels:
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);
}
}