使用包含文件名的String变量嵌入图像

时间:2010-06-26 20:50:40

标签: flex

我尝试将图像嵌入到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

?有人知道吗?或者我应该/可以使用样式表吗?

提前多多感谢&amp;最诚挚的问候。

3 个答案:

答案 0 :(得分:2)

我不确定你为什么需要它。无论如何,如果您尝试在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

}    
}

答案 1 :(得分:1)

嵌入发生在编译时;不是在运行时间。您无法使用set方法嵌入元素。

以下是有关嵌入资源的一些信息,例如Flex中的PNG:

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}"

答案 2 :(得分:0)

我可以使用样式表来完成。 你可以加入

styleName="myButton"

和via Stylesheets:

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

(也可能是外部样式表)。