Вставить изображение с помощью строковой переменной, которая содержит имя файла

Я пытаюсь встраивать изображения в mx:tree:

<mx:Tree labelField="name" id="tree" 
    folderOpenIcon="@Embed(source='assets/images/test.png')"
    folderClosedIcon="@Embed(source='assets/images/test.png')"
    defaultLeafIcon="@Embed(source='assets/images/test.png')">
</mx:Tree>

Это отлично работает, но я буду вставлять изображения с помощью переменной String.

У меня есть переменная и функция

[Bindable]
private var folderIcon:String;

public function setIcon(icon:String):void {
    folderIcon = icon; // "assets/images/test.png"
}

Но как можно заменить эти строки

folderOpenIcon="@Embed(source='assets/images/test.png')"
folderClosedIcon="@Embed(source='assets/images/test.png')"
defaultLeafIcon="@Embed(source='assets/images/test.png')"

с

folderIcon

? Кто-нибудь знает это? Или я должен / могу использовать таблицы стилей?

Большое спасибо заранее и наилучшими пожеланиями.

3 ответа

Решение

Я не совсем уверен, зачем тебе это нужно. В любом случае, если вы пытаетесь встроить изображения в AS3, вам нужно сделать следующее

class MyClass{

[Embed(source='assets/images/test_open.png')]
private static var folderOpenIcon:Class;

[Embed(source='assets/images/test_close.png')]
private static var folderClosedIcon:Class;

[Embed(source='assets/images/test_default.png')]
private static var defaultLeafIcon:Class;

[Bindable]
private var fodlerIcon:Class 

public function setIcon(iconClass:Class):void {
    folderIcon = iconClass:Class;
}

private function testIcon():void{
    setIcon(defaultLeafIcon); 
    // or
   setIcon(folderOpenIcon); 
    // etc

}    
}

Встраивание происходит во время компиляции; не во время выполнения. Вы не можете встроить элемент, используя метод set.

Вот некоторая информация о встраивании ресурсов, таких как PNG в Flex:

http://livedocs.adobe.com/flex/3/html/help.html?content=embed_4.html

    [Embed(source="assets/images/test.png")]
    [Bindable]
    public var folderIcon:Class;

И вы можете использовать это так:

folderOpenIcon="{folderIcon}"
folderClosedIcon="{folderIcon}"
defaultLeafIcon="{folderIcon}"

Я могу сделать это с помощью таблиц стилей. Вы можете положить в

styleName="myButton"

и таблицы стилей:

<mx:Style>
    .projectButton {
        icon: Embed("assets/images/test.png");
    }
</mx:Style>

(также возможна внешняя таблица стилей).

Другие вопросы по тегам