PDA

Просмотр полной версии : Сменить иконки в Tree через собственный рендерер


DsKTY
05.06.2009, 23:02
В общем, нужно построить Tree в котором разные элементы должны иметь разные иконки выбираемые хитрыми условиями и т.п. На сколько я понял, лучше всего это сделать с помощью собственного рендерера унаследованного от TreeItemRenderer. Создал класс, унаследовал его. Как понял из разных примеров нужно задать свою иконку для super.icon в методе updateDisplayList(). Но вот как именно её туда затокать не смог разобраться.

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);

super.icon = ???
}

Или может я не в ту степь полез, и это вообще нужно делать как-то по другому?

Felicast
12.06.2009, 15:20
не знаю на сколько это хорошо, но я сделал так:

override protected function commitProperties():void
{
super.commitProperties(); //здесь происходит создание иконок
if (icon) //иконка создана
{
//удаляем стандартную
removeChild(DisplayObject(icon));
}
//замменяем своей
icon = new YourIcon();
addChild(DisplayObject(icon));
}

не совсем хороший путь, так как сначала создается стандартная иконка, затем мы заменяем своей. можно вообще не вызывать super.commitProperties(), тогда стандартная иконка не создасться, но придется все, что происходит в super.commitProperties() делать руками.

может быть есть какой-то более элегантный метод. с удовольствием послушал бы