Показать сообщение отдельно
Старый 15.08.2010, 17:03
DimG вне форума Посмотреть профиль Отправить личное сообщение для DimG Найти все сообщения от DimG
  № 3  
Ответить с цитированием
DimG
 
Аватар для DimG

Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
Согласен, вопрос поставлен неточно=)

Итак. Я думаю, основной файл не имеет смысла приводить. Обычный лист. Вот Mit -- itemRenderer

Код:
 <?xml version="1.0" encoding="utf-8"?>
<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" 
				xmlns:my="hello.*"
				autoDrawBackground="true">
	<s:layout>
		<s:HorizontalLayout />
	</s:layout>
	
	<my:MImage source="{data.image}" setWidth="100" />
	<s:Label text="{data.man}" fontSize="20"/>	
	
</s:ItemRenderer>
Вот, собственно, MImage:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Image xmlns:fx="http://ns.adobe.com/mxml/2009" 
		  xmlns:s="library://ns.adobe.com/flex/spark" 
		  xmlns:mx="library://ns.adobe.com/flex/mx"    initialize="init()">
	<fx:Script>
		<![CDATA[
			public var setHeight:Number = 0;
			public var setWidth:Number = 0;
			
			public function init():void
			{
				var ratio:Number;
				if(setHeight!=0)
				{
					ratio = setHeight/height;
					height = setHeight;
					width = ratio*width;
				}
				if(setWidth!=0)
				{
					ratio = setWidth/width;
					height = ratio*height;
					width = setWidth;
				}
			}
		]]>
	</fx:Script>
</mx:Image>
Также согласен с замечанием, что функция инициализации будет вызывается только один раз. Это мне и нужно=)

Суть проблемы тоже ясна (надеюсь=). Изменение размеров картинки идет после того, как itemRenderer отобразил все на экране (так или нет?) и, естественно, лист не знает, что что-то изменилось внутри.

Вопрос следующий. Как заставить список (или itemRenderer'ы, я не знаю, кто это действие инициирует) перерисовать(перерасположить?) свои элементы? Т.е. есть ли специальная ф-ия, которая насильно это делает. Или же есть способ это все обойти без изврата? (Если есть, то предыдущий вопрос все равно актуален). И наконец, можно ли узнать размер загружаемой картинки до ее отображения.

P.S. В принципе есть еще идея реализовывать все в конструкторе, но, наверно, во флексе лучше ничего не делать в конструкторах, так как я не знаю внутренней архитектуры-- могу что-то напортить.


Thx=)


Последний раз редактировалось DimG; 15.08.2010 в 17:06.