The następujący być mój rozwiązanie:
1- Tworzyć zwyczaj TreeItemRenderer podążać:
RadioButtonTreeItemRenderer.as
_________________________________________________
pakunek
{
importowy flash.events. Wydarzenie;
importowy mx.controls.RadioButton;
importowy mx.controls.RadioButtonGroup
;
importowy mx.controls.treeClasses.*;
społeczeństwo klasowy RadioButtonTreeItemRenderer
przedłużyć TreeItemRenderer
{
społeczeństwo var RadioBtn: RadioButton;
społeczeństwo var RadioBtnGR: RadioButtonGroup
jawny var itemXml: XML;
jawny funkcja RadioButtonTreeItemRenderer
()
{
super ();
mouseEnabled = fałszywy;
}
override jawny funkcja ustalony dane (wartość: Przedmiot): pustka {
jeżeli (wartość! = null) {
super.data = wartość;
this.itemXml = XML (wartość);
jeżeli (this.itemXml.@checked == prawdziwy) {
this.RadioBtn.selected = true;
} inny {
this.RadioBtn.selected = fałszywy;
}
}
}
override ochraniać funkcja createChildren (): pustka {
super.createChildren ();
RadioBtn = nowy RadioButton ();
RadioBtnGR = nowy RadioButtonGroup ();
RadioBtn.group = RadioBtnGR;
addChild (RadioBtn);
}
override ochraniać funkcja updateDisplayList (unscaledWidth
: Liczba
, unscaledHeight: Liczba): pustka
{
super.updateDisplayList (unscaledWidth
, unscaledHeight
);
jeżeli (super.data) {
var tld: TreeListData = TreeListData (super.listData
);
jeżeli (tld.hasChildren) {
this.RadioBtn.visible = fałszywy;
} inny {
this.RadioBtn.visible = true;
}
jeżeli (RadioBtn.visible) {
this.RadioBtn.x = super.label.x
super.label.x = this.RadioBtn.x + 17;
this.RadioBtn.y = super.label.y+8;
}
}
}
}
}
________________________________________
2- podaniowy kod być:
http://www.adobe.com/2006/mxml " backgroundColor= " #FFFFFF " >
importowy mx.collections.ArrayCollection;
importowy mx.rpc.events.ResultEvent;
importowy mx.controls. Ostrzeżenie;
intymny funkcja TreeClickHandler (wydarzenie: Wydarzenie): pustka
{
var selectedXmlList: XMLList;
var itemObject: Przedmiot = event.currentTarget.selectedItem;
jeżeli (! myTree.dataDescriptor.isBranch (itemObject)) {
selectedXmlList = myData.item.part. (@parentid == itemObject.@parentid);
processSelection (selectedXmlList, itemObject.@id);
}
}
intymny funkcja processSelection (lista: XMLList, Objid: Sznurek): pustka {
var rzecz: XML;
dla lista (rzecz w lista) {
jeżeli (item.@id! =Objid)
{
item.@checked = fałszywy;
} inny
{
item.@checked = true;
}
}
}
]] >
id= " myTree "
itemClick= " TreeClickHandler (wydarzenie) "
itemRenderer= " RadioButtonTreeItemRenderer "
showRoot= " fałszywy "
width= " 100% "
height= " 100% "
labelField= " @label "
folderClosedIcon= " {null} "
folderOpenIcon= " {null} "
defaultLeafIcon= " {null} "
dataProvider= " {myData} "
openItems= " {myData. .item} ">