第一种
参考图片
代码:
- /**
- *画箭头
- *---▲
- *@paramstart开始节点
- *@paramend结束节点
- *@paramcolor线条颜色
- *@paramalpha透明度
- *@paramradius箭头的大小
- *
- */
- publicfunctiondrawArrow(start:Point,end:Point,color:uint=0x000000,alpha:Number=1,radius:Number=8.5):void{
- varz:Number=Math.sqrt((end.x-start.x)*(end.x-start.x)+(end.y-start.y)*(end.y-start.y));
- varangle:Number=Math.atan2(end.y-start.y,end.x-start.x);
- varexAngle:Number=Math.PI*4.8/4;
- varp1:Point=Point.polar(z,angle);
- varp2:Point=Point.polar(radius,angle+exAngle);
- varp3:Point=Point.polar(radius,angle-exAngle);
- p1.offset(start.x,start.y);
- p2.offset(p1.x,p1.y);
- p3.offset(p1.x,p1.y);
- if(alpha>1)alpha=1;
- elseif(alpha<0)alpha=0;
- arrow.graphics.beginFill(color,alpha);
- arrow.graphics.moveTo(p1.x,p1.y);
- arrow.graphics.lineTo(p2.x,p2.y);
- arrow.graphics.lineTo(p3.x,p3.y);
- arrow.graphics.lineTo(p1.x,p1.y);
- arrow.graphics.endFill();
- this.addChild(arrow);
- }
第二种
参考图片
代码:
- /**
- *画箭头方法
- *
- *→
- *@paramx1开始节点x轴坐标
- *@paramy1开始节点y轴坐标
- *@paramx2结束节点x轴坐标
- *@paramy2结束节点y轴坐标
- *@paramlineThickness线条的粗细
- *@paramcolor线条的颜色
- *@paramalpha透明度
- *
- */
- publicfunctionperformArrowDrawing(x1:Number,y1:Number,x2:Number,y2:Number,lineThickness:Number,color:Number,alpha:Number):void{
- arrow.graphics.lineStyle(lineThickness,color,alpha);
- vararrowHeight:Number=15;
- vararrowWidth:Number=10;
- varangle:Number=Math.atan2(y2-y1,x2-x1);
- arrow.graphics.moveTo(x2-arrowHeight*Math.cos(angle)-arrowWidth*Math.sin(angle),
- y2-arrowHeight*Math.sin(angle)+arrowWidth*Math.cos(angle));
- arrow.graphics.lineTo(x2,y2);
- arrow.graphics.lineTo(x2-arrowHeight*Math.cos(angle)+arrowWidth*Math.sin(angle),
- y2-arrowHeight*Math.sin(angle)-arrowWidth*Math.cos(angle));
- }
第三种
参考图片
代码:
- /**
- *
- *@paramstartX
- *@paramstartY
- *@paramendX
- *@paramendY
- *@return
- *
- */privatefunctionGetAngle(startX:Number,startY:Number,endX:Number,endY:Number):int
- {
- vartmpx:int=endX-startX;
- vartmpy:int=startY-endY;
- varangle:int=Math.atan2(tmpy,tmpx)*(180/Math.PI);
- returnangle;
- /**
- *
- *@paramstartX开始节点x轴坐标
- *@paramstartY开始节点y轴坐标
- *@paramendX结束节点x轴坐标
- *@paramendY结束节点y轴坐标
- *@paramRadius箭头的大小
- *
- */publicfunctiondrawArrowCenter(startX:Number,startY:Number,endX:Number,endY:Number,Radius:Number):void{
- varangle:int=GetAngle(startX,startY,endX,endY);
- varcenterX:int=endX-Radius*Math.cos(angle*(Math.PI/180));
- varcenterY:int=endY+Radius*Math.sin(angle*(Math.PI/180));
- vartopX:int=endX;
- vartopY:int=endY;
- varLineColor:uint=0x8699A5;
- varleftX:int=centerX+Radius*Math.cos((angle+120)*(Math.PI/180));
- varleftY:int=centerY-Radius*Math.sin((angle+120)*(Math.PI/180));
- varrightX:int=centerX+Radius*Math.cos((angle+240)*(Math.PI/180));
- varrightY:int=centerY-Radius*Math.sin((angle+240)*(Math.PI/180));
- arrow.graphics.beginFill(LineColor,1);
- arrow.graphics.lineStyle(1,LineColor,1);
- arrow.graphics.moveTo(topX,topY);
- arrow.graphics.lineTo(leftX,leftY);
- arrow.graphics.lineTo(centerX,centerY);
- arrow.graphics.lineTo(rightX,rightY);
- arrow.graphics.lineTo(topX,topY);
- arrow.graphics.endFill();
- }
其中第三种算法有点问题,箭头不对称,需要修改。希望高手指导。在此先感谢了
忘记加上
- publicvararrow:UIComponent=newUIComponent();