Flash教程:制作随机画圆弧动画

2019-10-08 20:24:42于海丽
一个随机画圆弧的效果
有几个属性可调整
也不多描述了
看看就知道了

点击这里看演示
贴一下代码
有兴趣的看一下吧
刚加了下注释
//******************* 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 ) {