Показать сообщение отдельно
Старый 13.08.2011, 14:16
Welcometo вне форума Посмотреть профиль Отправить личное сообщение для Welcometo Найти все сообщения от Welcometo
  № 1  
Ответить с цитированием
Welcometo

Регистрация: Mar 2011
Адрес: Уфа
Сообщений: 95
Отправить сообщение для Welcometo с помощью ICQ
По умолчанию Свой ItemRenderer

Здравствуйте, пытаюсь сделать ItemRenderer наподобие этого: http://imglink.ru/show-image.php?id=...4e334eed4191f9
Наследую класс LabelItemRenderer и дополняю его (как в рендерере из рисунка) следующими элементами: SkinnableContainer1, image, label1, label2. Ниже написан код этого рендерера, все что делал сам - выделил красным, остальное сделал Flash Builder . Подскажите что не так? первая ошибка - не отображается датапровайдер, пишет [Object], т.е. не задано свойство labelField, только как его задать для кастомного рендерера? Ну и без этого там немало ошибок, наверно.
Код:
package renderer
{
	public class listRender extends LabelItemRenderer
	{
		
		private var img:Image;
		private var label1:Label;
		private var skinnableContainer1:SkinnableContainer;
		private var label2:Label;
		
		public function listRender()
		{
			super();
			skinnableContainer1= new SkinnableContainer();
			
			img = new Image();
			skinnableContainer1.addElement(img);
			
			label1 = new Label();
			skinnableContainer1.addElement(label1);
			
			label2 = new Label();
			skinnableContainer1.addElement(label2);
		}
		
		override public function set data(value:Object):void
		{
			super.data = value;
			img.source = value.img;
			label1.text = value.text;
			label2.text = value.text2;    		
		} 
		
		override protected function createChildren():void
		{
			super.createChildren();
		}
		
		override protected function measure():void
		{
			super.measure();
			skinnableContainer1.measuredHeight = 120;
			skinnableContainer1.measuredWidth = 120;
			
			img.measuredHeight = 32;
			img.measuredMinWidth =  32;
			
			label1.setStyle("fontSize", 15);
			label2.setStyle("fontSize", 11);
			
	          }
		
		override protected function drawBackground(unscaledWidth:Number, 
									   unscaledHeight:Number):void
		{
			super.drawBackground(unscaledWidth, unscaledHeight);
                                  skinnableContainer1.setStyle('backgroundColor',0x333333);
			
		
		}
		
		override protected function layoutContents(unscaledWidth:Number, 
										   unscaledHeight:Number):void
		{
			super.layoutContents(unscaledWidth, unscaledHeight);
			skinnableContainer1.layout = new HorizontalLayout();
			  		
		}
		
	}
}
Датапровайдер примерно такой
Код:
<fx:Object text="Стратегия" text2="ccccccccccccccccc" img="../assets/11.png"/>
				<fx:Object text="Модель" text2="bbbbbbbbb" img="../assets/22.png"/>
				<fx:Object text="Flex" text2="aaaa" img="../assets/33.png"/>


Последний раз редактировалось Welcometo; 13.08.2011 в 16:03.