[英]Flex embedding an image where the path is based on a bound variable
我試圖在我的Flex項目中使用項目渲染器嵌入圖像。
但是,圖像路徑是作為綁定變量傳入的String。
我知道
<s:BitmapImage source="@Embed('/../assets/image.png')" />
有效,因為圖像是在運行時嵌入的? (有人可以澄清一下)
我將如何嵌入綁定的字符串,有點像這樣:
<s:BitmapImage source="@Embed('/../assets/{data.image}')" />
非常感謝
我認為,如果您想嵌入圖像但在運行時動態找到它,一個更好的選擇是:嵌入所有可能的圖像,然后動態獲取對其的引用。 我們通常使用這樣的模式:
public class Icons {
[Embed(source="icons/icon1.png")]
public var icon1:Class;
[Embed(source="icons/icon2.png")]
public var icon2:Class;
}
然后,您可以在運行時從Icons實例動態獲取嵌入式圖像。
編輯-包含示例 -我將使用項目渲染器,因為我認為這就是您正在做的事情。 假設data.image
可以是“飛機”,“火車”或“汽車”
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
[Embed(source="/assets/icons/plane.png")]
public var plane : Class;
[Embed(source="/assets/icons/train.png")]
public var train : Class;
[Embed(source="/assets/icons/automobile.png")]
public var automobile : Class;
]]>
</fx:Script>
<s:Image source="{this[data.image]}"/>
</s:ItemRenderer>
這是一個非常簡單的示例,而不是最佳實現方式,但是您可以理解。
我喜歡在CSS文件中嵌入圖標。 然后,在ItemRenderer中,您可以設置CSS類並獲取所需的圖像。
css文件或mxml css塊:
.icons
{
bender: Embed(source="/assets/bender.png");
/* other icons */
}
在渲染器中,當您覆蓋設置數據方法時:
override public function set data(value:Object):void
{
super.data = value;
var iconName:String = data.image;
if ( iconName )
{
var cssDecl2:CSSStyleDeclaration = styleManager.getStyleDeclaration(".icons");
var IconClass:Class = cssDecl2.getStyle( iconName );
bmImage.source = new IconClass();
}
}
和bmImage作為id s:BitmapImage:
<s:BitmapImage id="bmImage" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.