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

Flex中画箭头

发布时间:2020-12-15 04:33:13 所属栏目:百科 来源:网络整理
导读:? 第一种 ??? 参考图片 代码: ? [html] ? view plain copy /**?? ???*?画箭头??? ???*?---▲?? ???*?@param?start??开始节点?? ???*?@param?end????结束节点?? ???*?@param?color??线条颜色?? ???*?@param?alpha??透明度?? ???*?@param?radius??箭头的大小?

? 第一种

??? 参考图片

代码:

?

[html]? view plain copy
  1. /**??
  2. ???*?画箭头???
  3. ???*?---▲??
  4. ???*?@param?start??开始节点??
  5. ???*?@param?end????结束节点??
  6. ???*?@param?color??线条颜色??
  7. ???*?@param?alpha??透明度??
  8. ???*?@param?radius??箭头的大小??
  9. ???*???
  10. ???*/??
  11. ??public?function?drawArrow(start:Point,end:Point,color:uint=0x000000,alpha:Number=1,radius:Number=8.5):void{??
  12. ???var?z:Number=Math.sqrt((end.x?-?start.x)?*?(end.x?-?start.x)?+?(end.y?-?start.y)?*?(end.y?-?start.y));??
  13. ???var?angle:Number=Math.atan2(end.y?-?start.y,?end.x?-?start.x);??
  14. ???var?exAngle:Number=Math.PI?*?4.8?/?4;??
  15. ???var?p1:Point=Point.polar(z,?angle);??
  16. ???var?p2:Point=Point.polar(radius,?angle?+?exAngle);??
  17. ???var?p3:Point=Point.polar(radius,?angle?-?exAngle);??
  18. ???p1.offset(start.x,?start.y);??
  19. ???p2.offset(p1.x,?p1.y);??
  20. ???p3.offset(p1.x,?p1.y);??
  21. ???if(alpha>1)?alpha=1;??
  22. ???else?if(alpha<0)?alpha=0;??
  23. ???arrow.graphics.beginFill(color,alpha);??
  24. ???arrow.graphics.moveTo(p1.x,255); color:inherit; line-height:18px"> ???arrow.graphics.lineTo(p2.x,?p2.y);??
  25. ???arrow.graphics.lineTo(p3.x,?p3.y);??
  26. ???arrow.graphics.lineTo(p1.x,92); line-height:18px"> ???arrow.graphics.endFill();??
  27. ???this.addChild(arrow);??
  28. ??}??

???

?? 第二种???

???? 参考图片

????

代码:

copy
    ???*??画箭头方法??
  1. ???*?????
  2. ???*??→??
  3. ???*?@param?x1??开始节点x轴坐标??
  4. ???*?@param?y1??开始节点y轴坐标??
  5. ???*?@param?x2??结束节点x轴坐标??
  6. ???*?@param?y2??结束节点y轴坐标??
  7. ???*?@param?lineThickness?线条的粗细??
  8. ???*?@param?color??线条的颜色??
  9. ???*???
  10. ???*/???
  11. ??public?function?performArrowDrawing(x1:Number,?y1:Number,?x2:Number,?y2:Number,?lineThickness:Number,?color:Number,?alpha:Number):void{??
  12. ???arrow.graphics.lineStyle(lineThickness,?color,?alpha);??
  13. ???var?arrowHeight:Number?=?15;??
  14. ???var?arrowWidth:Number?=?10;??
  15. ???var?angle:Number?=?Math.atan2(y2-y1,?x2-x1);??
  16. ???arrow.graphics.moveTo(x2-arrowHeight*Math.cos(angle)-arrowWidth*Math.sin(angle),??
  17. ????y2-arrowHeight*Math.sin(angle)+arrowWidth*Math.cos(angle));??
  18. ???arrow.graphics.lineTo(x2,?y2);??
  19. ???arrow.graphics.lineTo(x2-arrowHeight*Math.cos(angle)+arrowWidth*Math.sin(angle),???
  20. ????y2-arrowHeight*Math.sin(angle)-arrowWidth*Math.cos(angle));???
  21. ??}??


?

?第三种

?????? 参考图片

??? 代码:

?

copy
    ???*?@param?startX??
  1. ???*?@param?startY??
  2. ???*?@param?endX??
  3. ???*?@param?endY??
  4. ???*?@return???
  5. ???*/private?function?GetAngle(startX:Number,startY:Number,endX:Number,endY:Number):int??
  6. ????????{??
  7. ????????????var?tmpx:int=endX-startX?;??
  8. ????????????var?tmpy:int=startY?-endY?;??
  9. ????????????var?angle:int=?Math.atan2(tmpy,tmpx)*(180/Math.PI);??
  10. ????????????return?angle;??
copy
    ??/**??
  1. ????*???
  2. ????*?@param?startX?开始节点x轴坐标??
  3. ????*?@param?startY?开始节点y轴坐标??
  4. ????*?@param?endX???结束节点x轴坐标??
  5. ????*?@param?endY???结束节点y轴坐标??
  6. ????*?@param?Radius?箭头的大小??
  7. ????*/?public??function?drawArrowCenter(startX:Number,endY:Number,Radius:Number):void?{??
  8. ?????????????var?angle:int=?GetAngle(startX,startY,endX,endY);??
  9. ?????????????var?centerX:int=endX-Radius?*?Math.cos(angle?*(Math.PI/180))?;??
  10. ?????????????var?centerY:int=endY+Radius?*?Math.sin(angle?*(Math.PI/180))?;??
  11. ?????????????var?topX:int=endX?;??
  12. ?????????????var?topY:int=endY??;??
  13. ?????????????var?LineColor:uint=0x8699A5;??
  14. ?????????????var?leftX:int=centerX?+?Radius?*?Math.cos((angle?+120)?*(Math.PI/180))??;??
  15. ?????????????var?leftY:int=centerY?-?Radius?*?Math.sin((angle?+120)?*(Math.PI/180))??;??
  16. ???????????????
  17. ?????????????var?rightX:int=centerX?+?Radius?*?Math.cos((angle?+240)?*(Math.PI/180))??;??
  18. ?????????????var?rightY:int=centerY?-?Radius?*?Math.sin((angle?+240)?*(Math.PI/180))??;??
  19. ???????????????
  20. ?????????????arrow.graphics.beginFill(LineColor,1);??
  21. ?????????????arrow.graphics.lineStyle(1,LineColor,92); line-height:18px"> ?????????????arrow.graphics.moveTo(topX,topY);??
  22. ?????????????arrow.graphics.lineTo(leftX,leftY);??
  23. ?????????????arrow.graphics.lineTo(centerX,centerY);??
  24. ?????????????arrow.graphics.lineTo(rightX,rightY);??
  25. ?????????????arrow.graphics.lineTo(topX,255); color:inherit; line-height:18px"> ?????????????arrow.graphics.endFill();??
  26. ??
  27. ?????????}??


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

忘记加上

copy
    public?var?arrow:UIComponent=new?UIComponent();??

(编辑:李大同)

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

    推荐文章
      热点阅读