Причина, по которой это не работает, заключается в том, что тип свойства fileIcon
равен Class
. Как правило, вы бы хотели получить объект типа Class
, только если вы планируете использовать его как фабрику, создавая экземпляры этого класса вместе с ним. Когда вы используете метаданные [Embed]
, вы указываете компилятору, что он должен встроить указанный актив в SWF, а также генерировать Class
, чтобы действовать как фабрика для экземпляров торговых объектов, которые могут представлять этот актив. Однако, как вы уже обнаружили до публикации этого вопроса, проблема с [Embed]
заключается в том, что вам нужно жестко кодировать ссылку, она не позволяет вам указывать значение во время выполнения (поскольку компилятору нужно буквально встраивать ресурс , во время компиляции).
К счастью, mx:Image.source
- это очень гибкое свойство, которое также принимает строки (несмотря на то, что большая часть документации демонстрирует использование его со встроенными ресурсами). Пока приложение Flex способно загружать ресурс, вы можете просто указать строковый URL-адрес как source
.
Измените тип fileIcon
на String, а также убедитесь, что value.file.url
на самом деле является URL-адресом изображения, которое может загрузить ваше приложение. (Вы можете проверить это, просто указав этот URL-адрес в атрибуте mx:Image
source
.)