0

Flex プロジェクトでアイテム レンダラーを使用して画像を埋め込もうとしています。

ただし、画像パスは、バインドされた変数として渡される文字列です。

私はそれを知っています

<s:BitmapImage source="@Embed('/../assets/image.png')" />

画像が実行時に埋め込まれているために機能しますか? (誰かがこれを明確にしてもらえますか)

次のように、バインドされた文字列を埋め込むにはどうすればよいですか。

<s:BitmapImage source="@Embed('/../assets/{data.image}')" />

どうもありがとう

4

2 に答える 2

0

画像を埋め込みたいが実行時に動的に見つけたい場合は、より良い選択だと思います。可能なすべての画像を埋め込み、それへの参照を動的に取得します。通常、次のようなパターンを使用します。

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>

これは非常に単純な例であり、最適な実装方法ではありませんが、アイデアは理解できます。

于 2013-04-16T19:58:33.607 に答える