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 ? 其他的忘记地址了。要是引用您的方法,一并感谢了 ? 第一种 ???
附上参考资料: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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- electron实现最小化到托盘
- 寒風的Cocos之旅之js篇---传递参数的妙用
- sqlite3_open_v2("/data/data/com.xxx.xxx/databases/x
- 编译器优化允许通过“int”,“least”和“fast”非固定宽度
- c – 将函数注入子类
- c# – SerialPort.BytesToWrite的用法
- swift – 在macOS命令行工具项目中读取文件
- ruby-on-rails – 如何在rails中创建插件/ gem
- Open Flash Chart 一直显示 Loading data,但是不报错,也没
- 使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuer