簡體   English   中英

Flex嵌入圖像,其中路徑基於綁定變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM