2010-06-26 54 views
3

我尝试在MX嵌入图像的字符串变量:树:嵌入图像与包含文件名

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

这工作得很好,但我会嵌入一个字符串变量中的图像。

我有一个变量和函数

[Bindable] 
private var folderIcon:String; 

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

但怎么可能与

folderIcon 

更换这些线路

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

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

非常感谢&最好的问候。

回答

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 

}  
} 
0

我可以用样式表来做。 你可以把在

styleName="myButton" 

和通过样式表:

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

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

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