aar*_*ona 1 apache-flex dynamic image-gallery tilelist
好的,所以我有一个我创建的自定义渲染:
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center"
verticalAlign="middle"
width="100"
height="100">
<mx:Script>
<![CDATA[
[Bindable]
private var fileLabel:String;
[Bindable]
private var fileIcon:Class;
override public function set data(value:Object):void{
fileLabel = value.label;
fileIcon = value.file.url;
}
]]>
</mx:Script>
<mx:Image source="{fileIcon}" />
<mx:Label text="{fileLabel}" />
</mx:VBox>
Run Code Online (Sandbox Code Playgroud)
我想用于照片库,图片被拖放到TileList上.我有那个部分,但我似乎无法让图标的东西工作.
给定:value是File类的包装器.我想将mx:Image源设置为需要类型为Class的东西.使用nativePath或url会给我一个强制转换错误.我在网上看到大量使用XML的例子,比如"Embed(/url/to/img.jpg)".我向你保证,如果你给我一个例子(使用静态图像),我会给你一个反对票.这不是我在这里寻找的东西!
这不起作用的原因是因为fileIcon属性的类型是Class.Class如果您打算像工厂一样使用它,通常只需要一个类型的对象,用它创建该类的实例.当您使用[Embed]元数据时,您向编译器指示它应该将指定的资产嵌入到SWF中,并且还生成一个Class用作可以表示该资产的自动售货对象实例的工厂.但是,正如您在发布此问题之前已经发现的那样,问题[Embed]在于您需要对引用进行硬编码,它不允许您在运行时提供值(因为编译器需要在编译时直接嵌入资源) -时间).
幸运的是,它mx:Image.source是一个非常灵活的属性,也接受字符串(尽管大多数文档都证明了它与嵌入式资产一起使用).只要Flex应用程序能够加载资产,您就可以提供String类型的URL作为source.
将类型更改fileIcon为String,并验证该value.file.url实际上是应用程序可以加载的图像的URL.(你可以通过将这个URL硬编码到mx:Image's source属性中来测试它.)