Здравствуйте всем!
У меня появилась проблема, которую я не могу решить уже третий день. Мне надо создать кастомный 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);
}
}