- 浏览: 66363 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
zero.peng:
能把源码发份给我吗,谢过了,964073580@qq.com
基于struts2和extjs的oa。。 -
windy0605:
lz 最近在做IM 源码提供参考下 谢了 hcydm_dl@1 ...
基于struts2和extjs的oa。。 -
织乐8:
toolTip没有显示出来嘛。
Flex实现画线(可拖拽、带箭头、可变色) -
dsjob:
学习学习学习学习学习学习学习学习学习学习
Flex实现画线(可拖拽、带箭头、可变色) -
benson0388:
benson0388@yahoo.com.cn
基于struts2和extjs的oa。。
在前人的基础上改了改,不多说,看效果图,贴代码:
主程序:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" fontSize="12" backgroundColor="#FFFFFF" layout="absolute" minWidth="955" minHeight="600"> <mx:Script> <![CDATA[ import com.njit.LinkLine; import com.njit.LinkMap; private var point1:Point; private var point2:Point; private var map1:LinkMap; private var map2:LinkMap; private var line:LinkLine; private var colorArr:Array=["0xFF0000","0x00FF00","0x0000FF","0xFFFF00"]; private var k:int=0; private function init():void{ point1=new Point(50,50); point2=new Point(300,300); map1=new LinkMap(point1,100,80,"主机",1); map2=new LinkMap(point2,100,80,"服务器",2); line=new LinkLine(); line.setStartPoint(new Point(map1.getCenterX(),map1.getCenterY())); line.setEndPoint(new Point(map2.getCenterX(),map2.getCenterY())); line.setTip("哈哈哈哈"); line.drawLine(); map1.setLine(line,true); map2.setLine(line,false); this.addChild(map1); this.addChild(map2); this.addChild(line); var time:Timer = new Timer(1000,100); time.addEventListener(TimerEvent.TIMER,doTime); time.start(); } //定时器设置颜色线条颜色变换 private function doTime(event:TimerEvent):void{ line.setLineColor(colorArr[k++]); line.drawLine(); if(k>=colorArr.length) k=0; } ]]> </mx:Script> </mx:Application>
线条类:
package com.njit { import flash.geom.Point; import mx.core.UIComponent; public class LinkLine extends UIComponent{ //线起点 private var startPoint:Point; //线终点 private var endPoint:Point; //线条颜色 private var lineColor:uint=0x000000; //线提示语 private var tip:String=" "; //是否要箭头 private var isArrow:Boolean=true; //箭头大小 private var radius:uint=6; public function LinkLine(){ super(); } //获得线的角度 public function getAngle():Number{ var tmpx:Number=endPoint.x - startPoint.x; var tmpy:Number=startPoint.y - endPoint.y; var angle:Number= Math.atan2(tmpy,tmpx)*(180/Math.PI); return angle; } //画线 public function drawLine():void{ this.graphics.clear(); this.graphics.lineStyle(2,lineColor); this.graphics.moveTo(startPoint.x,startPoint.y); this.graphics.lineTo(endPoint.x,endPoint.y); this.toolTip=tip; if(isArrow){ var angle:Number = this.getAngle(); var centerX:Number = endPoint.x - radius * Math.cos(angle*(Math.PI/180)); var centerY:Number = endPoint.y + radius * Math.sin(angle*(Math.PI/180)); var topX:Number = endPoint.x; var topY:Number = endPoint.y; var leftX:Number = centerX + radius * Math.cos((angle+120)*(Math.PI/180)); var leftY:Number = centerY - radius * Math.sin((angle+120)*(Math.PI/180)); var rightX:Number = centerX + radius * Math.cos((angle+240)*(Math.PI/180)); var rightY:Number = centerY - radius * Math.sin((angle+240)*(Math.PI/180)); this.graphics.beginFill(lineColor,1); this.graphics.lineStyle(2,lineColor,1); this.graphics.moveTo(topX,topY); this.graphics.lineTo(leftX,leftY); this.graphics.lineTo(centerX,centerY); this.graphics.lineTo(rightX,rightY); this.graphics.lineTo(topX,topY); this.graphics.endFill(); } } public function removeLine():void{ this.graphics.clear(); } public function setStartPoint(point:Point):void{ this.startPoint=point; } public function setEndPoint(point:Point):void{ this.endPoint=point; } public function setLineColor(color:uint):void{ this.lineColor=color; } public function setTip(tip:String):void{ this.tip=tip; } public function setArrow(flag:Boolean):void{ this.isArrow=flag; } } }
节点类:
package com.njit { import flash.events.MouseEvent; import flash.geom.Point; import mx.containers.Canvas; import mx.controls.Image; import mx.controls.Label; import mx.events.MoveEvent; public class LinkMap extends Canvas{ [Embed(source="assets/images/client.png")] [Bindable] public var c2s:Class; [Embed(source="assets/images/server.png")] [Bindable] public var s2c:Class; //网元名称 private var ueName:String = "网元"; private var lineList:Array =new Array(); private var lineCount:int = 0; private var oldIndex:int = 0; private var ueImage:Image=new Image(); private var ueLabel:Label=new Label(); public function LinkMap(point:Point,width:int,height:int,ueName:String,type:int){ super(); this.x=point.x; this.y=point.y; this.width=width; this.height=height; this.ueName=ueName; this.init(type); } //初始化 private function init(type:int):void{ this.addEventListener(flash.events.MouseEvent.MOUSE_DOWN,dragBegin); this.addEventListener(flash.events.MouseEvent.MOUSE_UP,dragEnd); this.addEventListener(flash.events.MouseEvent.MOUSE_MOVE,dragIng2); this.addEventListener(mx.events.MoveEvent.MOVE,dragIng1); this.verticalScrollPolicy = "off"; this.horizontalScrollPolicy = "off"; this.initLabel(); this.addChild(ueLabel); this.initUeImage(type); this.addChild(ueImage); } private function initUeImage(flag:int):void{ switch(flag){ case 1: ueImage.source = c2s;break; case 2: ueImage.source = s2c;break; } ueImage.x = 10; ueImage.y = 0; } private function initLabel():void{ ueLabel.text = ueName; ueLabel.x = 0; ueLabel.y = 60; ueLabel.width = 99; ueLabel.height = 20; } private function dragIng1(event:MoveEvent):void{ this.refreshLine(); } private function dragIng2(event:MouseEvent):void{ this.refreshLine(); } private function refreshLine():void{ var x:int = this.getCenterX(); var y:int = this. getCenterY(); for(var i:int=0;i<lineList.length;i++){ var lineFlag:LineFlag = lineList[i]; var line:LinkLine = lineFlag.getLine(); var isHeaderLine:Boolean = lineFlag.getFlag(); if(isHeaderLine){ line.setStartPoint(new Point(x,y)); }else{ line.setEndPoint(new Point(x,y)); } line.drawLine(); } } public function setLine(line:LinkLine,flag:Boolean):void{ var lineFlag:LineFlag = new LineFlag(line,flag); lineList[lineCount] = lineFlag; lineCount++; } private function dragBegin(event:MouseEvent):void{ oldIndex = this.parent.getChildIndex(this); this.parent.setChildIndex(this,this.parent.numChildren-1); this.startDrag(false); } private function dragEnd(event:MouseEvent):void{ this.parent.setChildIndex(this,oldIndex); this.stopDrag(); } public function getCenterX():int{ return this.x+30; } public function getCenterY():int{ return this.y+30; } } }
评论
7 楼
织乐8
2012-08-10
toolTip没有显示出来嘛。
6 楼
dsjob
2012-07-12
学习学习学习学习学习学习学习学习学习学习
5 楼
yypdc
2012-05-07
留名,后看
4 楼
ahww520
2011-07-08
感谢楼主啊
3 楼
50980487
2011-06-23
谢谢分享了...
2 楼
elvishehai
2010-06-01
怎么画虚线箭头了,呵呵,请教一下,
1 楼
queue19
2010-05-20
不错,学习了
发表评论
-
Flex开门效果
2010-07-02 15:09 1209网上找的。。。。 -
Flex中字符串trim方法
2010-06-19 15:04 2424//去除左边空格 public st ... -
Flex实现多功能Mp3播放器
2010-06-07 18:59 1176功能描述 暂停/播放 停止 上一首 下一首 音量调 ... -
Flex进度条小例子
2010-06-05 15:24 2637效果图如下:自动根据值变化进度条的颜色。 ... -
Flex中的MVC框架---puremvc
2010-06-04 17:00 1065先上传个教程。 -
Flex dataGrid 自定义显示列
2010-05-27 19:09 1218效果图如下: ... -
Flex鼠标变手势状
2010-05-26 17:32 1238有时客户会提这样的需求,在某些地方点击时需要把鼠标变成手势形状 ... -
Flex总体框架的优化
2010-05-25 18:05 1236优化策略: 1、系统只有一个主应用程序Application ... -
关于Flex的垃圾回收和内存泄漏
2010-05-25 17:16 1890在Java中我们不必担心内 ... -
Flex tabNavigator 的初级应用
2010-05-20 19:58 2056<?xml versi ... -
Flex动态加载类
2010-05-19 10:20 2469在Java中可以通过反射机制动态创建类,在Flex中同样可以根 ... -
Flex容器最大化
2010-05-12 10:20 1276若有左右布局的2个容器,左侧容器宽:20%,右侧容器宽:80% ... -
Flex中tree实现的种种细节
2010-05-07 15:50 2219需要解决的问题: 1、自定义节点icon图标 2、右键菜单 ... -
Flex 模块化 事件 国际化
2010-05-06 11:27 1402把最近的知识整理一下 Flex开发实现:模块化 ... -
Flex常用教程及库
2010-04-21 22:19 13371。google map 2。Cairngorm MV ...
相关推荐
在本案例中,"Flex实现拓扑,可以拖动 画线等",指的是利用Flex技术开发了一个具有拓扑图展示功能的应用,该应用允许用户进行节点拖动和连线绘制,提高了用户体验和互动性。 拓扑图通常用于表示网络、系统或流程中...
在IT行业中,尤其是在Web开发领域,"flex 图片画线,拖动"是一个常见的交互功能需求,用于增强用户体验。这个功能通常涉及到HTML5、CSS3和JavaScript等技术,特别是Flex布局和SVG图形技术。让我们详细探讨一下这个...
本文将深入探讨“flex节点画线”与“拖动节点线动”的技术实现,帮助开发者掌握这两项关键技能。 首先,我们要理解什么是Flex节点。在Flex布局中,节点通常指的是容器内的子元素,这些子元素可以灵活地调整自己的...
本项目聚焦于使用Flex API,一种基于Adobe Flex的开发框架,来实现军标箭头库的构建。这涉及到Web GIS应用的开发,以及如何将军事符号标准(例如北约军标)与地图服务相结合。 首先,ArcGIS Flex API是由Esri公司...
"flex画线可以删除"这个标题和描述可能是指在使用Flex布局时,如何通过CSS样式来实现或删除元素之间的分隔线。这里我们将深入探讨Flex布局以及如何控制其中的线条。 Flex布局(Flexible Box Layout)是CSS3引入的一...
Flex 画线 两点画线 画布画线 Flex3.0 画线段
总结来说,这个Flex项目展示了如何利用ActionScript 3和Flex框架创建动态画线和折线的功能,以及如何实现折点的拖动。这对于希望增强应用图形交互性的开发者来说,是一个宝贵的学习资源。通过深入理解并实践这个示例...
在“flex画线”的场景中,我们通常是指利用Flexbox( Flexible Box 或 Flex 布局)来创建各种线性结构,如分割线、网格线或者自定义的布局分隔。 在CSS中,`display: flex;`属性是开启Flex布局的关键。一旦一个容器...
这个类提供了丰富的绘图方法,如`beginFill()`、`lineTo()`、`moveTo()`等,可以用来画线、填充形状、绘制曲线。 3. **曲线绘制**: - 曲线绘制通常涉及到贝塞尔曲线,包括线性贝塞尔曲线和三次贝塞尔曲线。线性...
flex真是个很强大的工具,当然demo也是我们学习的主要方法,flex拖拽画矩形,很流畅的,一点不卡
在Flex技术中,实现“Flex画线随意拖动”功能主要涉及到图形绘制、事件处理以及交互设计等核心知识点。Flex是Adobe开发的一款用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript语言和MXML标记语言。...
flex画两个图片控件,用箭头把这两个连接起来,定制工作流程需要的flex技术例子。
在这个场景中,我们关注的是Flex实现的拖拽控件,这是一种交互式UI元素,允许用户通过鼠标操作移动元素,提供了丰富的用户体验。 拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类...
在Flex编程中,"flex成功画一个点"这个主题涉及到的是如何在用户界面元素上绘制一个像素级别的点。Flex是一种基于ActionScript的开源框架,主要用于创建富互联网应用程序(RIA)。在Flex中,我们可以利用图形库或者...
综上所述,实现“flex 画线,并连接到物体上”的功能需要深入理解Flex的图形绘制、事件处理、对象定位以及布局管理等核心概念。通过合理的代码结构和事件驱动机制,我们可以创建出一个动态、灵活的连线工具,满足...
根据提供的文件信息,我们可以分析出该文件主要涉及的是使用Adobe Flex技术实现的一种画线动画效果。下面将对该示例中的关键技术点进行详细解读。 ### 一、Adobe Flex简介 Adobe Flex是一个免费开源的软件框架,...
Flex画板实现主要涉及到的是Adobe Flex技术,这是一种用于构建富互联网应用程序(RIA)的开源框架。Flex使用MXML和ActionScript编程语言,基于Flash Player或Adobe AIR运行时环境,能够创建交互性强、视觉效果丰富的...
在本主题中,我们将深入探讨如何在Flex4中实现图片的拖放功能,包括两种模式:拖动图片不删除原图和拖动图片后删除原图。 首先,我们需要了解Flex4中的DragManager类,它是实现拖放操作的核心。DragManager提供了...
在这个特定的项目中,“FLEX ActionScript超强仿visio画线功能”是指使用ActionScript实现的类似Microsoft Visio的图形绘制功能。 Visio是一款流行的图表和流程图绘制软件,允许用户轻松创建各种复杂的图形。在FLEX...