Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Свой ItemRenderer (http://www.flasher.ru/forum/showthread.php?t=164062)

Welcometo 13.08.2011 14:16

Свой 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"/>


ShockWave512 14.08.2011 01:12

почему не в мх коде ?
Код AS3:

<?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"
                                autoDrawBackground="false"
                                width="110" height="75">
 
        <fx:Script>
                <![CDATA[
 
                        public override function set data(value:Object):void
                        {
                                thumbImage.source =value.image;
 
                                super.data = value;
 
                        }
                ]]>
        </fx:Script>
 
        <s:Image id="thumbImage" buttonMode="true"
                        right="0" top="0" left="10" bottom="0"
                        smooth="true" smoothingQuality="high"/>
 
        <s:Label text="{data.text}">
 
        <s:Label text="{data.text2}">
 
</s:ItemRenderer>


Welcometo 14.08.2011 03:35

ShockWave512, спасибо, я разобрался.


Часовой пояс GMT +4, время: 12:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.