2010-06-26 51 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}"