4,328
社区成员
发帖
与我相关
我的任务
分享
<node id="1" name="海棠晓月总表" imgUrl="olt" level="0" fatherNode="0" brotherCount="1" parentCount="0"/>
<node id="2" name="观景楼总表" imgUrl="splitter" level="1" fatherNode="1" brotherCount="3" parentCount="1"/>
<node id="3" name="听涛阁总表" imgUrl="splitter" level="1" fatherNode="1" brotherCount="3" parentCount="1"/>
<node id="4" name="颂梅苑总表" imgUrl="splitter" level="1" fatherNode="1" brotherCount="3" parentCount="1"/>
<node id="5" name="1层总表" imgUrl="onu" level="2" fatherNode="2" brotherCount="4" parentCount="3"/>
<node id="6" name="2层总表" imgUrl="onu" level="2" fatherNode="2" brotherCount="4" parentCount="3"/>
<node id="7" name="3层总表" imgUrl="onu" level="2" fatherNode="2" brotherCount="4" parentCount="3"/>
<node id="8" name="4层总表" imgUrl="onu" level="2" fatherNode="2" brotherCount="4" parentCount="3"/>
<node id="9" name="1-1表" imgUrl="other" level="3" fatherNode="5" brotherCount="4" parentCount="4"/>
<node id="10" name="1-2表" imgUrl="other" level="3" fatherNode="5" brotherCount="4" parentCount="4"/>
<node id="11" name="1-3表" imgUrl="other" level="3" fatherNode="5" brotherCount="4" parentCount="4"/>
<node id="12" name="1-4表" imgUrl="other" level="3" fatherNode="5" brotherCount="4" parentCount="4"/>
<node id="13" name="2-1表" imgUrl="other" level="3" fatherNode="6" brotherCount="4" parentCount="4"/>
<node id="14" name="2-2表" imgUrl="other" level="3" fatherNode="6" brotherCount="4" parentCount="4"/>
<node id="15" name="2-3表" imgUrl="other" level="3" fatherNode="6" brotherCount="4" parentCount="4"/>
<node id="16" name="2-4表" imgUrl="other" level="3" fatherNode="6" brotherCount="4" parentCount="4"/>
<node id="17" name="3-1表" imgUrl="other" level="3" fatherNode="7" brotherCount="4" parentCount="4"/>
<node id="18" name="3-2表" imgUrl="other" level="3" fatherNode="7" brotherCount="4" parentCount="4"/>
<node id="19" name="3-3表" imgUrl="other" level="3" fatherNode="7" brotherCount="4" parentCount="4"/>
<node id="20" name="3-4表" imgUrl="other" level="3" fatherNode="7" brotherCount="4" parentCount="4"/>
<node id="21" name="3-1表" imgUrl="other" level="3" fatherNode="8" brotherCount="4" parentCount="4"/>
<node id="22" name="3-2表" imgUrl="other" level="3" fatherNode="8" brotherCount="4" parentCount="4"/>
<node id="23" name="3-3表" imgUrl="other" level="3" fatherNode="8" brotherCount="4" parentCount="4"/>
<node id="24" name="3-4表" imgUrl="other" level="3" fatherNode="8" brotherCount="4" parentCount="4"/>
public static var w:Number;
public static var h:Number;
public static var count1:int=0;
public static var count2:int=0;
public static var count3:int=0;
public static var count4:int=0;
public static var flag:int=0;
public static var n:int=0;
public static var fatherNodeID:Array=new Array();
public static var fatherNode:Array=new Array();
/**
* 从xml创建整个拓扑图
* @param xml
*
*/
public function createFromXML(xml:XML):void {
for each(var nodeXML:XML in xml.node){
createNode(nodeXML);
}
createLine(lineXML);
}
/**
* 创建一个节点
* @param type
* @return
*
*/
public function createNode(data:Object,viewRenderer:UIComponent=null):INode{
var node:INode=new Node();
node.data=data;
if(viewRenderer==null){
node.viewRenderer=new ImageNodeRenderer();
}else{
node.viewRenderer=viewRenderer;
}
(node.viewRenderer as Container).data=node; //把每个节点都作为本容器的对象
_nodeIdMap[node.id]=node;//把节点保存到节点集合中
_nodeUIMap[node.viewRenderer]=node;
drawSpace.addChild(node.viewRenderer);//向容器里面加入节点对象子控件
w=drawSpace.width;
h=drawSpace.height;
//确定节点在容器中显示的位置
//对根结点的坐标位置
if(int(data.@level)==0) {
node.viewRenderer.x=w/5;
node.viewRenderer.y=h/2;
}
//对一级子项的布局
else if(int(data.@level)==1){
var j:int=int(data.@brotherCount);
count1++;
for(var i:int=0;i<count1;i++){
node.viewRenderer.x=2*w/5;
node.viewRenderer.y=(i+1)*h/(j+1);
}
}
//对二级子项的布局
else if(int(data.@level)==2){
var j1:int=int(data.@brotherCount);
count2++;
for(var i1:int=0;i1<count2;i1++){
node.viewRenderer.x=3*w/5;
node.viewRenderer.y=(1+i1)*h/(j1+1);
}
}
//对三级子项的布局
else if(int(data.@level)==3){
fatherNode[0]=new int(0);
var j2:int=int(data.@brotherCount);
var FNodeCount:int=int(data.@parentCount);
//记节点数
fatherNodeID[count3]=int(data.@fatherNode);//取得第三级父节点并存入数组(全部父节点)
//删除第三级父节点中重复的节点数,并放入fatherNode数组中
for(var k:int=0;k<1;k++){
for(var ii:int=0;ii<fatherNode.length;ii++){
if(fatherNodeID[count3].toString().match(fatherNode[ii].toString())){
flag=1;
break;
}
else{
flag=0;
continue;
}
}
if(flag==0){
fatherNode[count4+1]=fatherNodeID[count3];
count4++;
}
}
count3++;
//实现第三级有同一个父节点的节点坐标的y坐标和上一级的y坐标一致,x坐标每次自增50
for(var a:int=0;a<fatherNode.length;a++){
if(fatherNodeID[count3-1]==fatherNode[a]){
for(var m:int=0;m<1 && n<int(data.@brotherCount);m++){
var j3:int=int(data.@parentCount);
var y1:int=a*h/(j3+1);
node.viewRenderer.x=4*w/5+n*50;
node.viewRenderer.y=y1;
n++;
if(n==int(data.@brotherCount))
{
n=0;
}
break;
}
}
}
}
return node;
}
w=drawSpace.width;
h=drawSpace.height;
if(int(data.@fatherNode)==0)
{
node.viewRenderer.x=w/5;
node.viewRenderer.y=h/2;
}
//对一级子项的布局
else if(int(data.@fatherNode)==1){
var j:int=int(data.@SonCount);//还得考虑问题,如果他没有子节点
for(var i:int=1;i<=j;i++){
node.viewRenderer.x=2*w/5;
node.viewRenderer.y=i*h/j;
return node;
continue;
}
}
else if(int(data.@fatherNode)==2){
var j1:int=int(data.@SonCount);
for(var i1:int=1;i1<=j1;i1++){
node.viewRenderer.x=3*w/5;
node.viewRenderer.y=i1*h/j1;
return node;
continue;
}
}
else{
var j2:int=int(data.@SonCount);
for(var i2:int=1;i2<=j2;i2++){
node.viewRenderer.x=4*w/5;
node.viewRenderer.y=i2*h/j2;
return node;
continue;
}
}
<node id="1" name="海棠晓月" x="50" y="250" imgUrl="olt" fatherNode="0" SonCount="3" type="n1" states="normal"/>