Как изменить размер значков в элементе управления «Дерево» в Flex?

Я встраиваю графику SVG в свое приложение Flex, используя

package MyUI
{
    public class Assets
    {
        [Embed(source="/assets/pic.svg"]
        [Bindable]
        public static var svgPic:Class;
    }
}

а затем расширил класс Tree с помощью моего собственного кода, установив значок при добавлении узла к поставщику данных:

public class MyTree extends Tree
{
    public function MyTree()
    {
        // ...
        this.iconField = "svgIcon";
        // ...
        this.dataProvider = new ArrayCollection;
        this.dataProvider.addItem({ /* ... */ svgIcon: MyUI.Assets.svgPic /* ... */ });
        // ...
    }
}

Теперь у меня есть две вещи, которые я хочу сделать:

  • использовать графику SVG в нескольких местах приложения, масштабируя их до соответствующего размера для каждого внешнего вида, т.е. е. масштабируйте их до нужного размера значков при использовании в дереве
  • изменить размер значка во время выполнения, e. г. отображать немного более крупный значок для выбранных элементов или позволить значку «пульсировать» в ответ на какое-либо событие

Я прочитал документацию Flex о свойствах 9-сегментного масштабирования в теге Embed, но думаю, что это не то, что мне нужно.


Редактировать:

Я безуспешно проверил «похожие вопросы», предложенные SO, в том числе этот:

Flex: измените встроенный значок и используйте его в кнопку?


person Hanno Fietz    schedule 14.01.2009    source источник


Ответы (2)


Подкласс mx.controls.treeClasses.TreeItemRenderer и измените размер значка до желаемых размеров или создайте собственную реализацию средства визуализации элементов, используя те же интерфейсы, что и TreeItemRenderer. Установите настраиваемое средство визуализации элементов с помощью свойства itemRenderer:

exampleTree.itemRenderer = new ClassFactory( ExampleCustomItemRendererClass );
person Josh Tynjala    schedule 14.01.2009
comment
Хорошо, это решает мой начальный размер, но могу ли я изменить размер значков во время выполнения? - person Hanno Fietz; 14.01.2009
comment
Я не уверен, что ты имеешь в виду. Вы хотите, чтобы значки изменяли размер во время выполнения в дереве в зависимости от того или иного события или другого ввода? - person Josh Tynjala; 18.01.2009

Ответ на этот вопрос может указать вам правильное направление, не зная больше о возникшей у вас проблеме:

Flex: измените встроенный значок и используйте его в кнопку?

Надеюсь, поможет!

person Christian Nunciato    schedule 14.01.2009