直接上效果图

testp.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()" fontSize="12" backgroundColor="#FFFFFF"
layout="horizontal" minWidth="955" minHeight="600" xmlns:s="library://ns.adobe.com/flex/spark" horizontalAlign="center" verticalAlign="middle" xmlns:services="services.*">
<mx:Panel id="panelpp" width="1218" height="546" layout="absolute" title="资金流分析图" x="-23" y="26">
<mx:DataGrid id="dataG" x="10" y="38" height="465" doubleClickEnabled="true" doubleClick="dataG_doubleClickHandler(event)">
<mx:columns>
<mx:DataGridColumn headerText="资金源" dataField="label"/>
</mx:columns>
</mx:DataGrid>
<mx:ComboBox id="dataC" x="10" y="10" editable="true" width="102" dataProvider="{peopleArr1}"></mx:ComboBox>
<mx:Canvas id="cans" x="111" y="24" width="945" height="479" horizontalScrollPolicy="off" verticalScrollPolicy="off" textAlign="center">
</mx:Canvas>
<s:Button id="selectBtn" x="120" y="5" label="查询" click="selectBtn_clickHandler(event)"/>
<!--<s:Button x="199" y="5" label="线条变色" click="button1_clickHandler(event)"/>-->
</mx:Panel>
<mx:Script>
<![CDATA[
import com.adobe.serialization.json.JSON;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
private var point:Point;
private var line:LinkLine;
private var map:LinkMap;
private var pointArr:ArrayCollection;
private var lineArr:ArrayCollection;
private var mapArr:ArrayCollection;
[Bindable]
private var peopleArr:ArrayCollection;
[Bindable]
private var relationArr:ArrayCollection;
[Bindable]
private var peopleArr1:ArrayCollection;
private var colorArr:Array=["0xFF00FF","0xFF0000","0xf03455","0x00FF00","00ff34ff","99121212","12232323","32343434","00454545","67676767","90878700"];
private var k:int=0;
private var i:int;
private var j:int;
public var a:int;
public var c:int;
private var idbegin:String="1000";
// 页面加载即启动
private function init():void{
addEventListener(DoubleImageEvent.MYEVENT,handle);
peopleArr1=new ArrayCollection([
{"id":"1000","idx":"0","idy":"0","label":"张1000"},
{"id":"1001","idx":"1","idy":"0","label":"张2"},
{"id":"1002","idx":"1","idy":"1","label":"张3"},
{"id":"1003","idx":"2","idy":"0","label":"张4"},
{"id":"1004","idx":"2","idy":"1","label":"张5"},
{"id":"1005","idx":"3","idy":"0","label":"张6"}
]);
serviceInvoke();
}
private function serviceInvoke():void{
getNewArrResult.token = userRefresh.getNewArr(idbegin);
getNewRelationResult.token = userRefresh.getNewRelation(idbegin);
}
protected function selectBtn_clickHandler(event:MouseEvent):void
{
idbegin=this.dataC.selectedItem.id;
this.cans.removeAllChildren();
serviceInvoke();
}
// 布局
protected function getNewArrResult_resultHandler(event:ResultEvent):void
{
var rawArray:Array;
var rawData:String = event.result as String;
rawArray = JSON.decode(rawData) as Array;
peopleArr = new ArrayCollection(rawArray);
this.dataG.dataProvider=peopleArr;
peopleArr.refresh();
getMap();
}
private function getMap():void{
pointArr=new ArrayCollection();
a=peopleArr.length;
// 固定节点位置
for(i=0;i<a;i++){
var x1:int=160*(int(peopleArr[i].idx)+0.5);
var y1:int=80*(int(peopleArr[i].idy)+0.5);
point=new Point(x1,y1);
// 点集合
pointArr.addItem(point);
}
//Alert.show(pointArr.length+"");
// 画节点
mapArr=new ArrayCollection();
lineArr=new ArrayCollection();
for(i=0;i<a;i++){
map=new LinkMap(pointArr[i],100,80,peopleArr[i].label.toString(),peopleArr[i].id.toString());
// 图形节点集合
mapArr.addItem(map);
this.cans.addChild(mapArr[i]);
}
}
// 线
protected function getNewRelationResult_resultHandler(event:ResultEvent):void
{
var rawArray:Array;
var rawData:String = event.result as String;
rawArray = JSON.decode(rawData) as Array;
relationArr = new ArrayCollection(rawArray);
getLine();
}
private function getLine():void{
c=relationArr.length;
for(i=0;i<c;i++){
var b:int;
var e:int;
for(j=0;j<peopleArr.length;j++){
if(relationArr[i].id1.toString()==peopleArr[j].id.toString()){
b=j;
}
}
for(j=0;j<peopleArr.length;j++){
if(relationArr[i].id2.toString()==peopleArr[j].id.toString()){
e=j;
}
}
line=new LinkLine();
lineArr.addItem(line);
line.setStartPoint(new Point(mapArr[b].getCenterX(),mapArr[b].getCenterY()));
line.setEndPoint(new Point(mapArr[e].getCenterX(),mapArr[e].getCenterY()));
mapArr[b].setLine(line,true);
mapArr[e].setLine(line,false);
line.setTip(relationArr[i].data);
this.cans.addChild(line);
}
}
//线条颜色控制
/* protected function button1_clickHandler(event:MouseEvent):void
{
for(i=0;i<c;i++){
lineArr[i].setLineColor(colorArr[k]);
lineArr[i].drawLine();
k++;
if(k>=colorArr.length)
k=0;
}
} */
// 双击列表刷新dataGrid
protected function dataG_doubleClickHandler(event:MouseEvent):void
{
idbegin=dataG.selectedItem.id;
this.cans.removeAllChildren();
serviceInvoke();
}
// 点击图片刷新数据
private function handle(e:DoubleImageEvent):void{
idbegin=e.getId();
this.cans.removeAllChildren();
serviceInvoke();
}
]]>
</mx:Script>
<mx:CallResponder id="getNewRelationResult" result="getNewRelationResult_resultHandler(event)"/>
<services:UserRefresh id="userRefresh" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
<mx:CallResponder id="getNewArrResult" result="getNewArrResult_resultHandler(event)"/>
<mx:CallResponder id="getPeopleArrsResult"/>
</mx:Application>
图1是程序加载的默认图,图2是以张三为源的关系图,可以双击张3的dataGrid列表或者图标都可以实现自动更新图片以及他们的拓扑关系!
我给出全部代码给大家分享,下面是部分的mxml的主应用程序中的代码,看看是不是大家要的,想要完整代码可以直接下载附件!
附件项目部署说明:第一个和第二个压缩文件分别是flex和java端的项目写的已经很清楚了,只要有这两个源文件,java端部署tomcat,flex端服务器配置好,效果就可以出来!
若果不会配想看效果,就要用到第三个压缩文件了,把此文件解压后放到tomcat webapps文件夹下,启动tomcat,把flex端代码的服务器配置路径配置到刚才粘贴的文件上,
最后打开运行项目主程序,效果出来了,祝你好运!
第一次发自己的成果,不足之处多包涵,希望和大家一起讨论技术,共同进步!

- 大小: 17.3 KB

- 大小: 14.6 KB
分享到:
相关推荐
这个"Flex4做的系统拓扑图"项目,结合了Flex4的技术特性与数据库设计,提供了在MyEclipse集成开发环境中可运行的应用。 Flex4的核心是ActionScript 3.0,这是一种面向对象的编程语言,它为开发人员提供了丰富的功能...
在这个“flex做的拓扑图”项目中,我们可以了解到如何利用Flex技术来创建交互式的网络拓扑图表。拓扑图在IT行业中广泛应用于网络设备布局、数据流可视化以及系统架构展示等领域,它可以帮助用户直观地理解复杂的系统...
"flex拓扑图"可能是指使用Flex技术来创建动态、交互式的网络拓扑图表。Flex是一种基于ActionScript编程语言和Adobe Flash Player运行时的开源框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIAs...
Flex拓扑图是一种使用Adobe Flex技术构建的图形化表示网络、系统或应用程序结构的方法。它允许用户以交互式的方式查看和理解复杂的数据关系。在这个名为"HopeRunTopo"的压缩包中,很可能是包含了一个Flex实现的拓扑...
在这个拓扑图项目中,ActionScript可能被用于处理用户交互事件,如节点的拖放、连接线的绘制以及图元的动态更新等。 标签中的"Top"代表"Topology",即拓扑学,这里是指网络拓扑图,它是表示计算机网络设备、服务器...
综上所述,"flex4 系统拓扑图"可能是一个利用Flex4的图形和数据处理能力,结合MySQL数据库和DOM4J解析XML数据,实现动态、交互式的系统架构展示工具。文件“DIGovernor”可能是这个系统的一部分,可能是一个类、组件...
综上所述,构建Flex拓扑图组件涉及图形渲染、交互设计、数据绑定、组件自定义、布局管理、动画效果、状态管理和性能优化等多个方面。通过深入理解和熟练运用这些知识点,你可以创建出功能强大、交互性强的拓扑图组件...
在本文中,我们将深入探讨如何使用Flex来绘制拓扑图,并着重介绍两个关键的库:Spring和一位高手编写的自定义库。Flex是一种强大的ActionScript框架,用于构建富互联网应用程序(RIA),它允许开发者创建交互式的、...
在实际应用中,拓扑图可能需要动态更新,例如当网络设备发生变化时。为此,你可以使用Flex的XML或者AMF通信技术(如BlazeDS或 GraniteDS)来从服务器获取实时数据,并据此更新图形。 最后,为了优化性能和用户体验...
5. **交互与更新**:实现用户交互,如点击节点获取详细信息,拖动节点调整布局,以及实时更新拓扑图以反映系统状态变化。 为了实现以上功能,开发者需要熟悉Flex的编程模型、事件处理机制、图形渲染原理,以及CSV...
Flex拓扑图还可以与后端数据库、API接口集成,实时获取和更新拓扑数据。例如,可以使用HTTPService或WebService组件从服务器获取数据,或者将用户的操作反馈回服务器。 总结,Flex拓扑绘图技术结合了Flex的图形...
基于Flex的实时网络拓扑图呈现系统的设计与实现,章碧云,,本文介绍了一种基于Flex实现的实时拓扑图可视化呈现系统的设计与实现,通过XML文件实现通信接口的设计,利用MVC架构实现了Flex呈现系�
现在,我们将深入探讨Flex在构建架构图和拓扑图中的应用以及相关知识点。 首先,让我们了解一下Flex。Adobe Flex是基于MXML和ActionScript的开发工具,用于构建跨平台的桌面和移动Web应用程序。MXML是Flex的标记...
本示例“flex手工画拓扑图例子源码”提供了一个使用Flex开发的拓扑图Demo的早期版本,这对于我们理解如何在Flex环境中手动创建和展示拓扑图具有重要的学习价值。 拓扑图在IT系统中广泛应用于网络、数据流、硬件设备...
在本文中,我们将深入探讨如何使用Adobe Flex技术创建一个可拖拽的网络拓扑图实例。Flex是一款强大的开发工具,它允许开发者构建富互联网应用程序(RIA),尤其适用于创建交互式的、图形化的用户界面。网络拓扑图是...
对于连接的子文件“由数组生成节点拓扑”,可能是一个实现细节,即如何根据这个数组动态地生成和更新拓扑图。这通常涉及到两个步骤:解析数组数据,将数据转换成内部表示(如节点和边的实例),然后使用这些实例创建...
SrpingGranph 动态生成 拓扑图 非常酷的flex拓扑关系组件springgraph。-Topological relationships are very cool flex component springgraph.
### Flex拓扑图精品文档知识点概述 #### 一、Flex拓扑图的两种实现方式 Flex拓扑图作为网络管理中的重要工具,在IT领域扮演着关键角色。它可以帮助技术人员直观地理解和管理网络结构。根据提供的文档,Flex拓扑图...
免费的Flex拓扑组件,可用于拓扑图、关系图、流程图的绘制,不输与Twaver的展现效果及完善的扩展机制和中文API文档 详细效果 iolive.duapp.com
7. **项目结构**:虽然没有提供具体的源代码,但一个典型的Flex拓扑项目可能包括多个MXML和ActionScript文件,分别负责不同的视图和逻辑。资源文件如图片和样式表也需妥善组织。 8. **部署与运行环境**:Flex应用...