Как я могу динамически загружать изображения в виде значков в TileList с помощью flex?
-
22-08-2019 - |
Вопрос
Итак, у меня есть собственный рендер, который я создал:
<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
атрибут.)