333333333333

  1. package view.line   
  2. {   
  3.     import flash.geom.Point;   
  4.        
  5.     import mx.core.UIComponent;   
  6.   
  7.     public class ArrowUI extends UIComponent   
  8.     {   
  9.         public static var CENTER:String = "CENTER";   
  10.            
  11.         public static var STARTPOINT:String = "STARTPOINT";   
  12.            
  13.         public static var ENDPOINT:String = "ENDPOINT";   
  14.            
  15.         private var _endPoint:Point;//终点坐标   
  16.            
  17.         private var _startPoint:Point;//起点坐标   
  18.            
  19.         private var radius:uint=6;//箭头大小   
  20.         // 箭头所放的位置,"center" ,"startPoint","endPoint"   
  21.         private var _arrowAlign:String = "ENDPOINT";   
  22.            
  23.         public function ArrowUI()   
  24.         {   
  25.             super();   
  26.         }   
  27.         public function draw():void  
  28.         {   
  29.             this.graphics.clear();   
  30.             var p2:Point;   
  31.             var angle:Number = Util.getAngle(startPoint,endPoint);   
  32.             switch(_arrowAlign)   
  33.             {   
  34.                 case ArrowUI.ENDPOINT:   
  35.                     p2= startPoint;   
  36.                     break;   
  37.                 case ArrowUI.STARTPOINT:   
  38.                     p2 = endPoint;   
  39.                     break;   
  40.                 default:   
  41.                     p2= new Point((startPoint.x+endPoint.x)/2,(startPoint.y+endPoint.y)/2);   
  42.                     break;     
  43.             }   
  44.             var centerX:Number = p2.x - radius * Math.cos(angle*(Math.PI/180));   
  45.             var centerY:Number = p2.y + radius * Math.sin(angle*(Math.PI/180));   
  46.             var leftX:Number = centerX + radius * Math.cos((angle+120)*(Math.PI/180));   
  47.             var leftY:Number = centerY - radius * Math.sin((angle+120)*(Math.PI/180));   
  48.             var rightX:Number = centerX + radius * Math.cos((angle+240)*(Math.PI/180));   
  49.             var rightY:Number = centerY - radius * Math.sin((angle+240)*(Math.PI/180));   
  50.             var p1:Point = new Point( leftX , leftY);   
  51.             var p3:Point= new Point(rightX , rightY);      
  52.             var p4:Point= new Point(centerX , centerY);    
  53.             drawArrow(p1,p2,p3,p4);   
  54.         }   
  55.            
  56.         protected function drawArrow(p1:Point,p2:Point,p3:Point,p4:Point):void  
  57.         {   
  58.             this.graphics.beginFill(fillColor);   
  59.             this.graphics.lineStyle(1, fillColor, 1);   
  60.             this.graphics.moveTo(p1.x,p1.y);   
  61.             this.graphics.lineTo(p2.x,p2.y);   
  62.             this.graphics.lineTo(p3.x,p3.y);   
  63.             this.graphics.lineTo(p4.x,p4.y);    
  64.             this.graphics.lineTo(p1.x,p1.y);   
  65.             this.graphics.endFill();    
  66.         }   
  67.            
  68.         //线填充色(箭头)   
  69.         private var _fillcolor:uint = 0x66FF66;//0x0000FF   
  70.            
  71.         public function set fillColor(color:uint):void  
  72.         {   
  73.             _fillcolor=color;   
  74.         }   
  75.         [Bindable]   
  76.         public function get fillColor():uint   
  77.         {   
  78.             return _fillcolor;   
  79.         }   
  80.         //起点坐标   
  81.         public function set startPoint(p:Point):void  
  82.         {   
  83.             _startPoint = p;   
  84.         }   
  85.         public function get startPoint():Point   
  86.         {   
  87.             return _startPoint;   
  88.         }   
  89.         //终点点坐标   
  90.         public function set endPoint(p:Point):void  
  91.         {   
  92.             _endPoint = p;   
  93.         }   
  94.         public function get endPoint():Point   
  95.         {   
  96.             return _endPoint;   
  97.         }   
  98.            
  99.         // 箭头所放的位置,"center" ,"startPoint","endPoint"   
  100.         public function get arrowAlign():String   
  101.         {   
  102.             return _arrowAlign;    
  103.         }   
  104.         public function set arrowAlign(str:String):void  
  105.         {   
  106.             _arrowAlign = str;     
  107.         }   
  108.     }   
  109. }  

=======================================

 

 

package view.line  
{  
    import flash.geom.Point;  
      
    import mx.containers.Canvas;  
    import mx.effects.Move;  
    import mx.events.EffectEvent;  
 
 
    public class DottedLine extends Canvas  
    {  
        private var _endPoint:Point;//终点坐标  
          
        private var _startPoint:Point;//起点坐标  
          
        private var _lineSize:Number = 5;//虚线 空白长度  
          
        private var radius:uint=6;//箭头大小  
          
        private var _doMove:Boolean = true;// 是否移动  
          
        private var _duration:Number = 5000;//箭头运动时间  
          
        private var myMove:Move;  
                  
        private var arrow:ArrowUI ;  
        [Bindable]  
        private var tooltip:String;  
        public function DottedLine()  
        {  
            //TODO: implement function  
            super();    
            this.toolTip = tooltip;   
            arrow = new ArrowUI;  
        }  
          
        public function drawLine():void 
        {  
            var xTemp:Number = 0; // x 坐标 count的偏移x坐标差  
            var yTemp:Number = 0; // y 坐标 count的偏移y坐标差  
            var count:uint = 1; //虚实相间  
              
            if(!_startPoint || !_endPoint || _startPoint == _endPoint)  
            {  
                return;   
            }  
            this.graphics.clear();  
            this.graphics.beginFill(fillColor);  
            this.graphics.lineStyle(1, fillColor, 1);  
            this.graphics.moveTo(_startPoint.x,_startPoint.y);  
              
            var xLen:Number = -_startPoint.x + _endPoint.x;//起始点x坐标差距  
            var yLen:Number = -_startPoint.y + _endPoint.y;//起始点y坐标差距  
 
            var lineLen:Number = Math.sqrt(xLen * xLen + yLen * yLen);  
              
//            if(_duration == 0)  
//              _duration = Math.round(lineLen * 20);  
              
            xTemp =( _lineSize * xLen )/lineLen;//求出 x 坐标 count的偏移x坐标差  
            yTemp =( _lineSize * yLen )/lineLen;//求出 y 坐标count 的偏移y坐标差  
              
            var x0:Number = _startPoint.x;  
            var y0:Number = _startPoint.y;  
            while((lineLen/_lineSize) >= 1)  
            {  
                x0 = x0 + xTemp;//求出偏移x坐标  
                y0 = y0 + yTemp ;//求出偏移y坐标  
                if(0 == count%2)  
                {  
                    this.graphics.moveTo(x0,y0);  
                }else 
                {  
                    this.graphics.lineTo(x0,y0);  
                }  
                count++;  
                lineLen = lineLen - _lineSize;  
            }  
//          this.graphics.lineTo(_endPoint.x , _endPoint.y);  
            this.graphics.endFill();  
            //画箭头   
            arrow.startPoint = this.startPoint;  
            arrow.endPoint = this.endPoint;  
            arrow.arrowAlign = ArrowUI.STARTPOINT;  
            arrow.fillColor = this.fillColor;  
            arrow.draw();   
            var num:Number = this.numChildren;  
            if(_doMove)  
            {   
                this.stopMove();  
                myMove = new Move();   
                myMove.xFrom = -endPoint.x + startPoint.x;  
                myMove.yFrom = -endPoint.y + startPoint.y;  
                myMove.xTo = 0;  
                myMove.yTo = 0;  
                myMove.repeatCount = 0;  
                myMove.target = arrow;  
                myMove.duration = _duration;  
                myMove.play();  
            }  
              
        }  
          
        //线填充色(箭头)  
        private var _fillcolor:uint=0x00FF00;//0x808080  
          
        public function set fillColor(color:uint):void 
        {  
            _fillcolor=color;  
        }  
        [Bindable]  
        public function get fillColor():uint  
        {  
            return _fillcolor;  
        }  
        //起点坐标  
        public function set startPoint(p:Point):void 
        {  
            _startPoint = p;  
        }  
        public function get startPoint():Point  
        {  
            return _startPoint;  
        }  
        //终点点坐标  
        public function set endPoint(p:Point):void 
        {  
            _endPoint = p;  
        }  
        public function get endPoint():Point  
        {  
            return _endPoint;  
        }  
        //虚线 空白长度  
        public function set lineSize(num:Number):void 
        {  
            _lineSize = num;  
        }  
        public function get lineSize():Number  
        {  
            return _lineSize;  
        }  
        //是否显示箭头  
        public function set arrowVisible(num:Boolean):void 
        {  
            arrow.visible = num;  
        }  
        public function set arrowDoMove(num:Boolean):void 
        {  
            stopMove();  
            _doMove = num;  
            arrow.visible = num;  
        }  
        //是否移动箭头  
        public function stopMove():void 
        {  
            if(null != myMove && myMove.isPlaying)  
            {  
                myMove.stop();    
            }  
        }  
        public function get isPlaying():Boolean  
        {  
            return myMove.isPlaying;  
        }  
          
        public function get arrowObj():ArrowUI  
        {  
            return arrow;  
        }  
    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值