我正在尝试在我的 Flex 项目中使用项目渲染器嵌入图像。
然而,图像路径是作为绑定变量传入的字符串。
我知道
<s:BitmapImage source="@Embed('/../assets/image.png')" />
因为图像是在运行时嵌入的?(有人可以澄清一下吗)
我将如何嵌入我的绑定字符串,有点像这样:
<s:BitmapImage source="@Embed('/../assets/{data.image}')" />
非常感谢
我正在尝试在我的 Flex 项目中使用项目渲染器嵌入图像。
然而,图像路径是作为绑定变量传入的字符串。
我知道
<s:BitmapImage source="@Embed('/../assets/image.png')" />
因为图像是在运行时嵌入的?(有人可以澄清一下吗)
我将如何嵌入我的绑定字符串,有点像这样:
<s:BitmapImage source="@Embed('/../assets/{data.image}')" />
非常感谢
我喜欢在 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" />
如果您想嵌入图像但在运行时动态找到它,我认为更好的选择是:嵌入所有可能的图像,然后动态获取对它的引用。我们通常使用这样的模式:
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>
这是一个非常简单的例子,并不是最好的实现方式,但你明白了。