![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
Если реализовать стандартный пример “список изображений” типа http://blog.flexexamples.com/2008/03...elist-control/
но с использованием spark, то возникает проблема вывода картинок при таком синтаксисе: <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="165" height="200" opaqueBackground="0xEFEFEF"> <s:Label text="{XML(data).@title}"/> <s:Image id="img" source="{XML(data).@thumb}" /> </s:ItemRenderer>
При этом без проблем работает две конструкции (при тех же самых параметрах для s:List, при том же самом dataProvider) 1. Оригинальная конструкция из примера (mx:Box вместо s:ItemRenderer и mx:Image вместо s:Image): <mx:Box xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="165" height="200" opaqueBackground="0xEFEFEF">
<s:Label text="{XML(data).@title}" />
<mx:Image id="img" top="5" width="150" height="150" horizontalCenter="1"
source="{XML(data).@thumb}" />
</mx:Box>
2. Использование функции в качестве значения img.source: <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="165" height="200" opaqueBackground="0xEFEFEF"> <fx:Script> <![CDATA[ protected function dummyfunc(fn:String):String { return fn; } ]]> </fx:Script> <s:Label text="{XML(data).@title}" /> <s:Image id="img" source="{dummyfunc(XML(data).@thumb)}" /> </s:ItemRenderer> Кстати, почему-то не работает такой вариант (http://www.flasher.ru/forum/showthread.php?t=164062): override public function set data(value:Object):void { img.source = XML(value).@thumb; trace(XML(value).@thumb); super.data = value; } Так или иначе тема поднимается регулярно (например здесь http://www.flasher.ru/forum/showthread.php?t=157149 и здесь http://www.flasher.ru/forum/showthread.php?t=164062). Но "фундаментального" ответа на вопрос: почему s:ItemRenderer + s:Image не может использовать xml-привязку в source, а mx:Box + mx:Image может?я не нашел. Может кто подскажет? Последний раз редактировалось trng; 21.09.2011 в 02:04. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
А ты уверен, что проблема с s:Image?
XML(value).@attr возвращает не String, а XMLList. Поэтому думаю, что у s:Image просто другая трактовка приведения типа в отличие от SWFLoader (source у mx:Image наследовано у него). Кстати, твой второй работающий пример это подтверждает - когда значение текстовое и тип четко приведен, то срабатывает нормально. |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
Цитата:
Вот так работает: А вот и объяснение. В SWFLoader.loadContent есть такой код: ... else { // We have something that is not a class or string (XMLNode, for // example). Call toString() and try to load it. url = classOrString.toString(); ... Добавлено через 3 минуты Аналогичным образом заработал и вариант с set data: |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|