`
daiyongcai
  • 浏览: 5625 次
社区版块
存档分类
最新评论

flex做的可动态更新的拓扑图

    博客分类:
  • flex
阅读更多

直接上效果图


 





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
分享到:
评论
6 楼 jonymrshi 2013-11-26  
描述 资源 路径 位置 类型
1120: 访问的属性 JSON 未定义。 testp.mxml /linedemo2/src 第 75 行 Flex 问题
1120: 访问的属性 JSON 未定义。 testp.mxml /linedemo2/src 第 109 行 Flex 问题
无法明确解析多名称引用。JSON(来自 C:\Program Files\Adobe\flashBuilder\Adobe Flash Builder 4.6\sdks\4.6.0\frameworks\libs\player\11.1\playerglobal.swc(JSON, Walker))和 com.adobe.serialization.json:JSON(来自 C:\Documents and Settings\shi.wang\桌面\76605375-7287-370f-8a59-815743d90cd8\linedemo2\src\com\adobe\serialization\json\JSON.as)可用。 testp.mxml /linedemo2/src 未知 Flex 问题

完全复制你的代码。
楼主,我把你的代码下载下来,出现这样的问题。在flashbuilder下面。
我用的是sdk4.6的。
5 楼 mumuqingwei 2013-01-11  
感谢分享
4 楼 daiyongcai 2012-08-21  
我用的是flex4.0版本的
3 楼 daiyongcai 2012-08-21  
你好! RemoteObjectServiceWrapper是flex和java的服务调用的代码,如果只有flex端代码,通信没有通,会报错,把java端的代码发布和flex端的都发不到tomcat中,具体操作你要会服务调用
2 楼 poincare 2012-08-20  
您好,看您的例子,报错,1017: 找不到基类 RemoteObjectServiceWrapper 的定义。
1 楼 poincare 2012-08-20  
请问是用的 skd4.0的?

相关推荐

    Flex4 做的系统拓扑图

    这个"Flex4做的系统拓扑图"项目,结合了Flex4的技术特性与数据库设计,提供了在MyEclipse集成开发环境中可运行的应用。 Flex4的核心是ActionScript 3.0,这是一种面向对象的编程语言,它为开发人员提供了丰富的功能...

    flex做的拓扑图

    在这个“flex做的拓扑图”项目中,我们可以了解到如何利用Flex技术来创建交互式的网络拓扑图表。拓扑图在IT行业中广泛应用于网络设备布局、数据流可视化以及系统架构展示等领域,它可以帮助用户直观地理解复杂的系统...

    flex拓扑图

    "flex拓扑图"可能是指使用Flex技术来创建动态、交互式的网络拓扑图表。Flex是一种基于ActionScript编程语言和Adobe Flash Player运行时的开源框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIAs...

    flex 拓扑图dome

    Flex拓扑图是一种使用Adobe Flex技术构建的图形化表示网络、系统或应用程序结构的方法。它允许用户以交互式的方式查看和理解复杂的数据关系。在这个名为"HopeRunTopo"的压缩包中,很可能是包含了一个Flex实现的拓扑...

    Flex+Java开发拓扑图

    在这个拓扑图项目中,ActionScript可能被用于处理用户交互事件,如节点的拖放、连接线的绘制以及图元的动态更新等。 标签中的"Top"代表"Topology",即拓扑学,这里是指网络拓扑图,它是表示计算机网络设备、服务器...

    flex4 系统拓扑图

    综上所述,"flex4 系统拓扑图"可能是一个利用Flex4的图形和数据处理能力,结合MySQL数据库和DOM4J解析XML数据,实现动态、交互式的系统架构展示工具。文件“DIGovernor”可能是这个系统的一部分,可能是一个类、组件...

    flex做拓扑图的组件

    综上所述,构建Flex拓扑图组件涉及图形渲染、交互设计、数据绑定、组件自定义、布局管理、动画效果、状态管理和性能优化等多个方面。通过深入理解和熟练运用这些知识点,你可以创建出功能强大、交互性强的拓扑图组件...

    Flex 画拓扑图两个库(Spring 和一个高人写的库)

    在本文中,我们将深入探讨如何使用Flex来绘制拓扑图,并着重介绍两个关键的库:Spring和一位高手编写的自定义库。Flex是一种强大的ActionScript框架,用于构建富互联网应用程序(RIA),它允许开发者创建交互式的、...

    如何使用flex 开发拓扑图

    在实际应用中,拓扑图可能需要动态更新,例如当网络设备发生变化时。为此,你可以使用Flex的XML或者AMF通信技术(如BlazeDS或 GraniteDS)来从服务器获取实时数据,并据此更新图形。 最后,为了优化性能和用户体验...

    flex CSV解析 拓扑图绘制

    5. **交互与更新**:实现用户交互,如点击节点获取详细信息,拖动节点调整布局,以及实时更新拓扑图以反映系统状态变化。 为了实现以上功能,开发者需要熟悉Flex的编程模型、事件处理机制、图形渲染原理,以及CSV...

    flex 拓扑绘图

    Flex拓扑图还可以与后端数据库、API接口集成,实时获取和更新拓扑数据。例如,可以使用HTTPService或WebService组件从服务器获取数据,或者将用户的操作反馈回服务器。 总结,Flex拓扑绘图技术结合了Flex的图形...

    论文研究-基于Flex的实时网络拓扑图呈现系统的设计与实现 .pdf

    基于Flex的实时网络拓扑图呈现系统的设计与实现,章碧云,,本文介绍了一种基于Flex实现的实时拓扑图可视化呈现系统的设计与实现,通过XML文件实现通信接口的设计,利用MVC架构实现了Flex呈现系�

    flex 画架构图 拓扑图

    现在,我们将深入探讨Flex在构建架构图和拓扑图中的应用以及相关知识点。 首先,让我们了解一下Flex。Adobe Flex是基于MXML和ActionScript的开发工具,用于构建跨平台的桌面和移动Web应用程序。MXML是Flex的标记...

    flex手工画拓扑图例子源码

    本示例“flex手工画拓扑图例子源码”提供了一个使用Flex开发的拓扑图Demo的早期版本,这对于我们理解如何在Flex环境中手动创建和展示拓扑图具有重要的学习价值。 拓扑图在IT系统中广泛应用于网络、数据流、硬件设备...

    flex总制作可拖拽的网络拓扑图实例

    在本文中,我们将深入探讨如何使用Adobe Flex技术创建一个可拖拽的网络拓扑图实例。Flex是一款强大的开发工具,它允许开发者构建富互联网应用程序(RIA),尤其适用于创建交互式的、图形化的用户界面。网络拓扑图是...

    flex画拓扑图的第一步

    对于连接的子文件“由数组生成节点拓扑”,可能是一个实现细节,即如何根据这个数组动态地生成和更新拓扑图。这通常涉及到两个步骤:解析数组数据,将数据转换成内部表示(如节点和边的实例),然后使用这些实例创建...

    SrpingGranph 动态生成 拓扑图

    SrpingGranph 动态生成 拓扑图 非常酷的flex拓扑关系组件springgraph。-Topological relationships are very cool flex component springgraph.

    Flex拓扑图精品文档

    ### Flex拓扑图精品文档知识点概述 #### 一、Flex拓扑图的两种实现方式 Flex拓扑图作为网络管理中的重要工具,在IT领域扮演着关键角色。它可以帮助技术人员直观地理解和管理网络结构。根据提供的文档,Flex拓扑图...

    Flex拓扑图组件-iolive

    免费的Flex拓扑组件,可用于拓扑图、关系图、流程图的绘制,不输与Twaver的展现效果及完善的扩展机制和中文API文档 详细效果 iolive.duapp.com

    flex制作拓扑拓扑

    7. **项目结构**:虽然没有提供具体的源代码,但一个典型的Flex拓扑项目可能包括多个MXML和ActionScript文件,分别负责不同的视图和逻辑。资源文件如图片和样式表也需妥善组织。 8. **部署与运行环境**:Flex应用...

Global site tag (gtag.js) - Google Analytics