У меня есть элемент управления Flex-дерево, которое содержит дерево, заполненное различными типами объектов. Я хотел бы изменить метку элемента на основе этого типа (и других свойств). Я бы предпочел сделать это в пользовательском TreeItemRenderer, а не через функцию label или label.
Кажется, что что бы я ни делал, я не могу ни проверять, ни приводить объекты, и поэтому я получаю [Объектный объект] в узлах моего дерева. Вот мой рендер:
public class MyCustomTreeItemRenderer extends TreeItemRenderer {
// Overriding to set the text for each tree node.
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
if (super.data) {
trace("Rendering node:");
if (super.data is MyClassA) {
trace(" MyClassA");
super.label.text = MyClassA(super.data).name
}
if (super.data is MyClassB) {
trace(" MyClassB");
super.label.text = MyClassB(super.data).id;
}
}
}
public function NavigateTreeItemRenderer() {
super();
}
}
Изучение трассировки показывает, что я выполняю рендеринг узла, но я никогда не попаду внутрь ни одного из двух операторов if. Когда я запускаю в отладчике, я могу на самом деле свойства «данных», которые соответствуют MyClassA и MyClassB!