Как я могу динамически загружать изображения в виде значков в TileList с помощью flex?

StackOverflow https://stackoverflow.com/questions/539458

Вопрос

Итак, у меня есть собственный рендер, который я создал:

<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.У меня эта часть отключена, но я не могу заставить значок работать.

Данный:value — это своего рода оболочка для класса File.Я хочу установить источник mx:Image на что-то, что должно иметь тип Class.Использование NativePath или URL-адреса дает мне ошибку приведения.Я вижу в Интернете массу примеров использования XML и чего-то вроде «Вставить(/url/to/img.jpg)».Я обещаю вам, что если вы дадите мне один из этих примеров (с использованием статического изображения), я проголосую против.ЭТО НЕ ТО, ЧТО Я ЗДЕСЬ ИЩУ!

Это было полезно?

Решение

Причина, по которой это не работает, заключается в том, что тип fileIcon собственность Class.Обычно вам нужен только объект типа Class если вы планируете использовать его как фабрику, создавая с его помощью экземпляры этого класса.Когда вы используете [Embed] метаданные, вы указываете компилятору, что он должен встроить указанный актив в SWF, а также сгенерировать Class действовать как фабрика по продаже экземпляров объектов, которые могут представлять этот актив.Однако, как вы уже обнаружили, прежде чем публиковать этот вопрос, проблема с [Embed] заключается в том, что вам нужно жестко запрограммировать ссылку, она не позволяет вам указывать значение во время выполнения (потому что компилятору необходимо буквально встроить актив во время компиляции).

К счастью, mx:Image.source — это очень гибкое свойство, которое также принимает строки (несмотря на то, что в большинстве документации показано его использование со встроенными ресурсами).Если приложение Flex способно загружать ресурс, вы можете просто указать URL-адрес строкового типа в качестве source.

Изменить тип fileIcon в строку, а также убедитесь, что value.file.url на самом деле это URL-адрес изображения, которое может загрузить ваше приложение.(Вы можете проверить это, просто жестко закодировав этот URL-адрес в файле mx:Image's source атрибут.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top