【问题标题】:How can I load images as icons dynamically into a TileList using flex?如何使用 flex 将图像作为图标动态加载到 TileList 中?
【发布时间】:2009-02-12 19:46:03
【问题描述】:

好的,我已经创建了一个自定义渲染:

<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 上的图像。我有那部分,但我似乎无法让图标工作。

Given: value 是 File 类的一种包装器。我想将 mx:Image 源设置为需要为 Class 类型的东西。使用 nativePath 或 url 会给我一个转换错误。我在网上看到了大量使用 XML 和“嵌入(/url/to/img.jpg)”之类的示例。我向你保证,如果你给我其中一个例子(使用静态图像),我会给你投反对票。这不是我在这里寻找的东西!

【问题讨论】:

    标签: apache-flex dynamic image-gallery tilelist


    【解决方案1】:

    这不起作用的原因是fileIcon 属性的类型是Class。如果您打算像工厂一样使用它,通常只需要一个类型为 Class 的对象,并用它创建该类的实例。当您使用[Embed] 元数据时,您向编译器指示它应该将指定的资产嵌入到 SWF 中,并生成一个 Class 来充当可以代表该资产的出售对象实例的工厂。但是,正如您在发布此问题之前已经发现的那样,[Embed] 的问题是您需要对引用进行硬编码,它不允许您在运行时提供值(因为编译器需要逐字嵌入资产, 在编译时)。

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

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

    【讨论】:

    • 嘿,埃里克,非常感谢!!我是 flex 新手,所以学习框架是我的主要障碍。而且我习惯了名为“Vishnu”或“Sandeep”的人(泛泛而谈……我在开玩笑)在其他网站上用无用的信息回答我的技术问题,或者只是重复我在原帖中所说的话。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多