?
?
?
生成上面树的XML:
<root>
? <leafs mark="普通用户d">
??? <ID>20120804071540</ID>
??? <parentID/>
??? <name>普通用户d</name>
??? <leaf mark="用户组1">
????? <ID>20120804071541</ID>
????? <parentID>20120804071540</parentID>
????? <name>用户组1</name>
??? </leaf>
??? <leaf mark="用户组2">
????? <ID>20120804071542</ID>
????? <parentID>20120804071540</parentID>
????? <name>用户组2</name>
??? </leaf>
? </leafs>
? <leaf mark="管理员">
??? <ID>20120804072044</ID>
??? <parentID/>
??? <name>管理员</name>
? </leaf>
</root>
?
树节点组件代码:
package com.control
{
?import flash.display.MovieClip;
?import flash.display.Graphics;
?import flash.text.TextField;
?import flash.events.*;
?import flash.geom.Matrix;
?public class xmlTreeNode extends MovieClip
?{
??private var g:Graphics;
??private var gaps:Number=20;
??private var childNodes:Array=[];
??private var nodeCount:int=0;??
??private var txt:TextField=new TextField;
??
??//标记
??private var _mark:MovieClip=new MovieClip;
??public function get mark():MovieClip
??{
???return _mark;
??}
??
??//标签
??private var _nodeBody:MovieClip=new MovieClip;
??public function get body():MovieClip
??{
???return _nodeBody;
??}
??
??//数据
??private var _nodeData:XML=null;
??public function get nodeData():XML
??{
???return _nodeData;
??}
??public function set nodeData(v:XML):void
??{
???_nodeData=v;
???drawChart(_nodeData);
??}
????
??//多选
??private var _multipleSelect:Boolean=false;
??public function set multipleSelect(v:Boolean):void
??{
???_multipleSelect=v;
??}
??
??//是否展开
??private var _spread:Boolean=false;
??public function get spread():Boolean
??{
???return _spread;
??}
??public function set spread(v:Boolean):void
??{
???_spread=v;
???refreshMark();
??}
??
??//是否是复杂节点
??private var _hasChildren:Boolean=false;
??public function get hasChildren():Boolean
??{
???return _hasChildren;
??}
??public function set hasChildren(v:Boolean):void
??{
???_hasChildren=v;
???refreshMark();
??}
??
??//自己的ID
??private var _ID:int=0;
??public function get ID():int
??{
???return _ID;
??}
??public function set ID(v:int):void
??{
???_ID=v;
??}
??
??//父节点ID
??private var _parentId:int=-1;
??public function get parentId():int
??{
???return _parentId;
??}
??public function set parentId(v:int):void
??{
???_parentId=v;
??}
??
??//父节点
??private var _parentMc:MovieClip=null;
??public function get parentMc():MovieClip
??{
???return _parentMc;
??}
??public function set parentMc(v:MovieClip):void
??{
???_parentMc=v;
??}
??
??//是否选中
??private var _selected:Boolean=false;
??public function get selected():Boolean
??{
???return _selected;
??}
??public function set selected(v:Boolean):void
??{
???_selected=v;
???if(_selected)
???{
????txt.htmlText=""+txt.text+"";
???}
???else