加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 画箭头(三种)

发布时间:2020-12-15 04:49:38 所属栏目:百科 来源:网络整理
导读:看了很多大神的资料,耗费了N多的脑细胞,可怜我的智商啊!!!! 附上参考资料:http://www.blogjava.net/1504/archive/2009/11/26/303775.html http://www.dancecoder.com/2012/438.html ? 其他的忘记地址了。要是引用您的方法,一并感谢了 ? 第一种 ???


看了很多大神的资料,耗费了N多的脑细胞,可怜我的智商啊!!!!

附上参考资料:http://www.blogjava.net/1504/archive/2009/11/26/303775.html

http://www.dancecoder.com/2012/438.html

?

其他的忘记地址了。要是引用您的方法,一并感谢了

? 第一种

??? 参考图片

代码:

?

/**
?? * 画箭头 
?? * ---▲
?? * @param start? 开始节点
?? * @param end??? 结束节点
?? * @param color? 线条颜色
?? * @param alpha? 透明度
?? * @param radius? 箭头的大小
?? * 
?? */
??public function drawArrow(start:Point,end:Point,color:uint=0x000000,alpha:Number=1,radius:Number=8.5):void{
???var z:Number=Math.sqrt((end.x - start.x) * (end.x - start.x) + (end.y - start.y) * (end.y - start.y));
???var angle:Number=Math.atan2(end.y - start.y,end.x - start.x);
???var exAngle:Number=Math.PI * 4.8 / 4;
???var p1:Point=Point.polar(z,angle);
???var p2:Point=Point.polar(radius,angle + exAngle);
???var p3: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;
???else if(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);
??}

???

?? 第二种???

???? 参考图片

???

代码:

/**
?? *? 画箭头方法
?? *?? 
?? *? →
?? * @param x1? 开始节点x轴坐标
?? * @param y1? 开始节点y轴坐标
?? * @param x2? 结束节点x轴坐标
?? * @param y2? 结束节点y轴坐标
?? * @param lineThickness 线条的粗细
?? * @param color? 线条的颜色
?? * @param alpha? 透明度
?? * 
?? */ 
??public function performArrowDrawing(x1:Number,y1:Number,x2:Number,y2:Number,lineThickness:Number,color:Number,alpha:Number):void{
???arrow.graphics.lineStyle(lineThickness,color,alpha);
???var arrowHeight:Number = 15;
???var arrowWidth:Number = 10;
???var angle: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)); 
??}


?

?第三种

?????? 参考图片

??? 代码:

?

/**
?? * 
?? * @param startX
?? * @param startY
?? * @param endX
?? * @param endY
?? * @return 
?? * 
?? */private function GetAngle(startX:Number,startY:Number,endX:Number,endY:Number):int
		{
			var tmpx:int=endX-startX ;
			var tmpy:int=startY -endY ;
			var angle:int= Math.atan2(tmpy,tmpx)*(180/Math.PI);
			return angle;
  /**
??? * 
??? * @param startX 开始节点x轴坐标
??? * @param startY 开始节点y轴坐标
??? * @param endX?? 结束节点x轴坐标
??? * @param endY?? 结束节点y轴坐标
??? * @param Radius 箭头的大小
??? * 
??? */ public  function drawArrowCenter(startX:Number,endY:Number,Radius:Number):void {
			 var angle:int= GetAngle(startX,startY,endX,endY);
			 var centerX:int=endX-Radius * Math.cos(angle *(Math.PI/180)) ;
			 var centerY:int=endY+Radius * Math.sin(angle *(Math.PI/180)) ;
			 var topX:int=endX ;
			 var topY:int=endY  ;
			 var LineColor:uint=0x8699A5;
			 var leftX:int=centerX + Radius * Math.cos((angle +120) *(Math.PI/180))  ;
			 var leftY:int=centerY - Radius * Math.sin((angle +120) *(Math.PI/180))  ;
			 
			 var rightX:int=centerX + Radius * Math.cos((angle +240) *(Math.PI/180))  ;
			 var rightY: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();

		 }


其中第三种算法有点问题,箭头不对称,需要修改。希望高手指导。在此先感谢了

忘记加上

public var arrow:UIComponent=new UIComponent();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读