2009-02-12 54 views
1

好了,我有一个自定义的渲染,我已经创建了:如何使用flex将图像动态加载到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> 

,我想使用一个照相馆与被拖拽到一个TileList的图像。我有这部分,但我似乎无法得到图标的东西工作。

考虑:值排序包装器文件类。我想将mx:Image源设置为需要类型为Class的东西。使用nativePath或url给我一个转换错误。我在网上看到很多使用XML的例子,以及类似“Embed(/url/to/img.jpg)”的例子。我向你保证,如果你给我一个这样的例子(使用静态图像),我会给你一个否定的投票。这不是什么在这里寻找!

回答

6

的原因,这是不工作是因为fileIcon属性的类型是Class。如果您打算像工厂一样使用它,通常只需要一个类型为Class的对象,并使用它创建该类的实例。当使用[Embed]元数据,则是指示它应该嵌入指定资产到SWF,并且还产生一个Class充当工厂自动售货机对象实例可以表示该资产的编译器。然而,正如你已经张贴了这个问题之前就已经发现,与[Embed]的问题是,你需要硬编码的参考,它不会让你提供在运行时的值(因为编译器需要逐字嵌入资产,在编译时)。

幸运的是,mx:Image.source是,也接受字符串(尽管大多数文档演示了如何使用它嵌入资产的事实)一个非常灵活的特性。只要Flex应用程序能够加载资产,您就可以提供一个字符串类型的URL作为source

fileIcon的类型更改为字符串,并验证value.file.url实际上是应用程序可以加载的图像的URL。 (您可以只用硬编码将该URL mx:Imagesource属性进行测试。)

+0

嘿埃里克,非常感谢! 我是flex新手,所以学习框架是我的主要障碍。而且我习惯了名为“Vishnu”或“Sandeep”(泛泛而谈......我在开玩笑)的人回复我在其他网站提供的无用信息的技术问题,或者只是重复我在原始文章中提到的内容。 – DJTripleThreat 2009-02-12 09:44:43

相关问题