可互動調整參數(角度、圈數、半徑、線寬、顏色、軌跡/葉子模式)的程式化圓弧繪製工具,展示 Flash 繪圖 API (`lineStyle`、`moveTo`、`curveTo`) 進階應用。
function draw_small_arc(mc, ox, oy, r, origin_angle, angle, thickness, rbg, alpha):Object {
// 角度標準化、控制點計算(幾何推導:弦長、 sagitta)
// 使用 curveTo 繪製,返回終點座標
}
關鍵數學:二次貝茲曲線控制點距離 `ctrl_r = r / cos(angle/2)`,控制點角度為 `origin_angle + angle/2`。
function draw_arc(mc, ox, oy, r, origin_angle, angle, thickness, rbg, alpha):Object {
var times = int(Math.abs(angle)/45);
var last_angle = Math.abs(angle)%45;
for (i=0; i<times; i++) draw_small_arc(..., 45*i+origin_angle, 45, ...);
return draw_small_arc(..., 45*times+origin_angle, last_angle, ...);
}
var origin_angle, angle, angle_rnd, dir, old_dir, time;
var posx, posy, pos_obj, r, thickness;
var is_trace, leaf_grow;
var line_mc; // 繪圖容器,綁定遮罩 mask
function init_prop() {
line_mc.removeMovieClip();
line_mc = createEmptyMovieClip("line_mc", 1);
line_mc.setMask(mask); // 舞台元件 mask 限制可視區域
line_mc._x = mask._x; line_mc._y = mask._y;
origin_angle = random(4)*90; // 0/90/180/270 度隨機起始
angle = get_txt_value(angle_txt, 0, ...); // 讀取 UI 輸入
// ... 其餘參數同理讀取
}