贴一下代码,有兴趣的看一下吧,刚加了下注释...
//******************* draw_arc ************************ //******************* 作者:boenlee ******************* //舞台元件: //可视区域元件--mask //移动按钮--up_btn, down_btn, left_btn, right_btn //文本框--angle_txt, time_txt, r_txt, thickness_txt //复选按钮--trace_check, leaf_check //重画按钮--redraw_btn //库链接元件: //叶子--leaf //*************************************************** //画小于等于45度的圆弧,任意角度开始 //mc:目标mc名称 //ox:原点x位置 //oy:原点y位置 //r:半径 //origin_angle:起始角度 //angle:弧的角度,正数顺时针画弧,负数逆时针画弧 //thickness:线的粗细 //rbg:线的颜色 //alpha:线的透明度 //返回:圆弧终点坐标,终点为角度大的点,与angle符号无关 function draw_small_arc (mc:MovieClip, ox:Number, oy:Number, r:Number, origin_angle:Number, angle:Number, thickness:Number, rbg:Number, alpha:Number):Object { var origin_angle:Number = origin_angle % 360; var angle:Number = angle % 360; origin_angle = angle < 0 ? origin_angle + angle : origin_angle; angle = Math.abs (angle); angle = angle > 45 ? 45 : angle; var ctrl_r:Number = maintain_digit (1 / cosD (angle / 2) * r, 4); var ctrl_sin:Number = maintain_digit (sinD (origin_angle + angle / 2), 4); var ctrl_cos:Number = maintain_digit (cosD (origin_angle + angle / 2), 4); var org_sin:Number = maintain_digit (sinD (origin_angle), 4); var org_cos:Number = maintain_digit (cosD (origin_angle), 4); var achr_sin:Number = maintain_digit (sinD (origin_angle + angle), 4); var achr_cos:Number = maintain_digit (cosD (origin_angle + angle), 4); with (mc) { lineStyle (thickness, rbg, alpha, false, "normal", "none"); moveTo (org_cos * r + ox, org_sin * r + oy); curveTo (ctrl_cos * ctrl_r + ox, ctrl_sin * ctrl_r + oy, achr_cos * r + ox, achr_sin * r + oy); } return {x:achr_cos * r + ox, y:achr_sin * r + oy}; } //画小于等于360度的圆弧,任意角度开始 //参数及返回值与draw_small_arc函数相同 function draw_arc (mc:MovieClip, ox:Number, oy:Number, r:Number, origin_angle:Number, angle:Number, thickness:Number, rbg:Number, alpha:Number):Object { var origin_angle:Number = angle < 0 ? origin_angle + angle : origin_angle; var angle:Number = Math.abs (angle); var times:Number = int (angle / 45); var last_angle:Number = angle % 45; if (times >= 8) { times = 8; last_angle = 0; } for (var i:Number = 0; i < times; i++) { draw_small_arc (mc, ox, oy, r, 45 * i + origin_angle, 45, thickness, rbg, alpha); |