Flexを使用したActivityプロセスデザイナの開発(7)-線矢印描画

1684 ワード

線を描く矢印は、線の開始座標と終了座標に基づいて角度を決定します.
 
コード:
 
public function drawArrow(ui:Sprite,fromPoint:Point,toPoint:Point,color:uint):void  
		{  
			ui.graphics.lineTo(toPoint.x,toPoint.y);
			var vDistance:Number= toPoint.y-fromPoint.y;//         
			var sDistance:Number=Point.distance(fromPoint,toPoint);//         
			var sinValue:Number=vDistance/sDistance;//        sin   
			/**            (  )*/  
			var radian:Number=Math.asin(sinValue); 
			this.radian = radian;
			/**                    (  )*/  
			var hRadian:Number=Math.PI/6-radian;  
			/**                    (  )*/  
			var vRadian:Number=radian+Math.PI/6;  
			/**            */  
			var topYDis:Number=13*Math.sin(vRadian);  
			/**            */  
			var topXDis:Number=13*Math.cos(vRadian);  
			/**            */  
			var botYDis:Number=13*Math.sin(hRadian);  
			/**            */  
			var botXDis:Number=13*Math.cos(hRadian);  
			/**           */  
			var topPointX:Number=toPoint.x-topXDis;  
			var topPointY:Number=toPoint.y-topYDis;  
			
			var botPointX:Number=toPoint.x-botXDis;  
			var botPointY:Number=toPoint.y+botYDis;  
			if(toPoint.x<fromPoint.x)  
			{  
				topPointX=toPoint.x+topXDis;  
				botPointX=toPoint.x+botXDis;  
			}  
			ui.graphics.beginFill(0xFECff0);  
			ui.graphics.moveTo(topPointX,topPointY);  
			ui.graphics.lineTo(toPoint.x,toPoint.y);  
			ui.graphics.lineTo(botPointX,botPointY);  
			ui.graphics.lineTo(topPointX,topPointY);
			
		}