Ciò che segue è la mia soluzione:
1- Generare un TreeItemRenderer su ordinazione come segue:
RadioButtonTreeItemRenderer.as
_________________________________________________
pacchetto
{
importazione flash.events. Evento;
importazione mx.controls.RadioButton;
importazione mx.controls.RadioButtonGroup
;
importazione mx.controls.treeClasses.*;
il codice categoria pubblico RadioButtonTreeItemRenderer
estende TreeItemRenderer
{
pubblico varietà RadioBtn: RadioButton;
pubblico varietà RadioBtnGR: RadioButtonGroup
itemXml pubblico di varietà: XML;
funzione pubblica RadioButtonTreeItemRenderer
()
{
eccellente ();
mouseEnabled = falso;
}
dati stabiliti di funzione pubblica della provvigione supplementare (valore: Oggetto): vuoto {
se (valore! = posizione di segnale minimo) {
super.data = valore;
this.itemXml = XML (valore);
se (== di this.itemXml.@checked allineare) {
this.RadioBtn.selected = allineano;
} altrimenti {
this.RadioBtn.selected = falso;
}
}
}
la funzione protettiva provvigione supplementare createChildren (): vuoto {
super.createChildren ();
RadioBtn = nuovo RadioButton ();
RadioBtnGR = nuovo RadioButtonGroup ();
RadioBtn.group = RadioBtnGR;
addChild (RadioBtn);
}
updateDisplayList di funzione protettivo provvigione supplementare (unscaledWidth
: Numero
, unscaledHeight: Numero): vuoto
{
super.updateDisplayList (unscaledWidth
, unscaledHeight
);
se (super.data) {
tld di varietà: TreeListData = TreeListData (super.listData
);
se (tld.hasChildren) {
this.RadioBtn.visible = falso;
} altrimenti {
this.RadioBtn.visible = allineano;
}
se (RadioBtn.visible) {
this.RadioBtn.x = super.label.x
super.label.x = this.RadioBtn.x + 17;
this.RadioBtn.y = super.label.y+8;
}
}
}
}
}
________________________________________
2- il codice di applicazione è:
backgroundColor= " #FFFFFF " di http://www.adobe.com/2006/mxml " >
importazione mx.collections.ArrayCollection;
importazione mx.rpc.events.ResultEvent;
importazione mx.controls. Allarme;
funzione riservata TreeClickHandler (evento: Evento): vuoto
{
selectedXmlList di varietà: XMLList;
itemObject di varietà: Oggetto = event.currentTarget.selectedItem;
se (! myTree.dataDescriptor.isBranch (itemObject)) {
selectedXmlList = myData.item.part. (== itemObject.@parentid del @parentid);
processSelection (selectedXmlList, itemObject.@id);
}
}
processSelection riservato di funzione (lista: XMLList, Objid: Stringa): vuoto {
articolo di varietà: XML;
per ciascuno (articolo nella lista) {
se (item.@id! =Objid)
{
item.@checked = falso;
} altrimenti
{
item.@checked = allineano;
}
}
}
]] >
id= " myTree "
itemClick= " TreeClickHandler (evento) “
itemRenderer= " RadioButtonTreeItemRenderer "
showRoot= " falso "
width= " 100% "
height= " 100% "
labelField= " @label "
folderClosedIcon= " {posizione di segnale minimo} “
folderOpenIcon= " {posizione di segnale minimo} “
defaultLeafIcon= " {posizione di segnale minimo} “
dataProvider= " {myData} “
openItems= " {myData. .item} “>