Вставить изображение с помощью строковой переменной, которая содержит имя файла
Я пытаюсь встраивать изображения в 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>
(также возможна внешняя таблица стилей).