2009-02-12 1 views
1

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

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

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

ответ

6

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

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

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

+0

Эй, Эрик, спасибо огромное! Я новичок в flex, так что изучение рамки - мое главное препятствие. И я привык к людям по имени «Вишну» или «Сандип» (обобщение .. я шучу) отвечу на мои технические вопросы на других сайтах с бесполезной информацией или просто повторяя то, что я сказал в своем оригинальном посте. – DJTripleThreat

Смежные вопросы