Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 27.08.2008, 08:02
Pogrebeshka вне форума Посмотреть профиль Отправить личное сообщение для Pogrebeshka Найти все сообщения от Pogrebeshka
  № 1  
Ответить с цитированием
Pogrebeshka

Регистрация: Jun 2008
Сообщений: 24
По умолчанию Item Renderer для List

Здравствуйте всем!

У меня появилась проблема, которую я не могу решить уже третий день. Мне надо создать кастомный ItemRenderer для List. Там надо чтобы в каждой строке был RadioButton и несколько CheckBox. "Галочки" пока проблем не вызвали, но радио батон изначально создал проблему, так как они должны быть в одной группе, но это решилось как-то. Создало проблему то, что я не ожидал. Я не могу к CheckBox применить CSS из внешнего файла. Вроде все нормально его загружаю но когда я пытаюсь приметьи СSS к нему, плейер выдает ошибку.

Если кто-нибудь знает как это можно реализовать проще, без написания собвенного класса, я буду вам весьма признателен.

Спасибо.

Вот код класса:
Код:
import flash.events.Event;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.text.StyleSheet;
   
   import mx.controls.CheckBox;
   import mx.controls.Label;
   import mx.controls.RadioButton;
   import mx.controls.listClasses.BaseListData;
   import mx.controls.listClasses.ListBase;
   import mx.controls.listClasses.ListItemRenderer;
   import mx.events.ListEvent;
   
   public class RadioButtonListItemRenderer extends ListItemRenderer
   {

      private var checkBoxViseble:CheckBox;
      private var radioButton:RadioButton;
      private var checkBoxSort:CheckBox;
      private var titleLabel:Label;
      private var styleSheet:StyleSheet;
      private var request:URLRequest;
      private var loader:URLLoader;
      private var styleMan:Object;
      
      public function RadioButtonListItemRenderer()
      {
      	this.styleSheet = new StyleSheet();
         this.request = new URLRequest("style.css");
         this.loader = new URLLoader();
         this.loader.addEventListener(Event.COMPLETE,OnLoadCSS);
         this.loader.load(request);
      }

      private var list:ListBase;

      override protected function createChildren():void
      {
         super.createChildren();
         
         this.checkBoxViseble = new CheckBox();          
         this.radioButton = new RadioButton();
         this.checkBoxSort = new CheckBox();
         this.titleLabel = new Label();
         
         this.addChild(this.checkBoxViseble);
         this.addChild(this.radioButton);
         this.addChild(this.checkBoxSort);
         this.addChild(this.titleLabel);
      }
      
      override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
      {         
         super.updateDisplayList(unscaledWidth, unscaledHeight);

         this.checkBoxViseble.x = 3;
         this.checkBoxViseble.y = this.height / 2 - this.radioButton.height / 2;
         this.radioButton.x = 25;
         this.radioButton.y = this.height / 2 - this.radioButton.height / 2;
         
         this.checkBoxSort.x = 45;
         this.checkBoxSort.y = this.height / 2 - this.radioButton.height / 2;
         this.checkBoxSort.visible = false;

        
         this.label.x = 65;
         
      }
      
       private function OnLoadCSS(event:Event):void
       {
       	this.styleSheet.parseCSS(loader.data);
       	styleMan = this.styleSheet.getStyle(".visibleCBStyle");

       	//проблема собсвенно возникает здесь.
       }
      override public function set listData(value:BaseListData):void
      {
         super.listData = value;
                   
         if (value.owner is ListBase)
         {          
            if (this.list)
            {
               this.list.removeEventListener(ListEvent.CHANGE, ownerChangeHandler);
            }
                
            this.list = value.owner as ListBase;

         }
      }
      
     
      private function ownerChangeHandler(event:ListEvent):void
      {       
         this.radioButton.selected = (this.data != null && this.data == this.list.selectedItem);
      }
      
   }

Создать новую тему   Часовой пояс GMT +4, время: 20:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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