一个随机画圆弧的效果
有几个属性可调整
也不多描述了
看看就知道了
点击这里看演示
贴一下代码
有兴趣的看一下吧
刚加了下注释
}
//主函数
function main () {
if (--time > 0) {
dir = random (2) ? 1 : -1;
origin_angle += angle;
//如果当前弧的方向与前一个的不同,计算当前弧所在圆的原点位置
if (dir + old_dir == 0) {
posx += cosD (origin_angle) * 2 * r;
posy += sinD (origin_angle) * 2 * r;
origin_angle += 180;
}
if (angle_rnd) {
angle = dir * (random (50) + 50);
} else {
angle = dir * Math.abs (angle);
}
pos_obj = draw_arc (line_mc, posx, posy, r, origin_angle, angle, thickness, color_arr[random (color_arr.length)], 100);
//加载树叶
if (leaf_grow) {
line_mc.attachMovie ("leaf", "leaf" + time, time, {_x:pos_obj.x, _y:pos_obj.y, _rotation:random (360), _xscale:random (50) + r * 2 + thickness * 5, _yscale:random (50) + r * 2 + thickness * 5, _alpha:random (100) + thickness * 5});
var leaf_color:Color = new Color (line_mc["leaf" + time]);
leaf_color.setRGB (leaf_color_arr[random (leaf_color_arr.length)]);
}
//跟踪
if (is_trace) {
line_mc._x = mask._x - pos_obj.x;
line_mc._y = mask._y - pos_obj.y;
}
old_dir = dir;
} else {
delete line_mc.onEnterFrame;
}
}
//获取文本框内容,为数值
//txt_name:文本框名称
//nan_val:文本内容非数字时所取值
//zero_val:文本内容为0时所取值
//min_val:文本内容最小值
//max_val:文本内容最大值
function get_txt_value (txt_name:TextField, nan_val:Number, zero_val:Number, min_val:Number, max_val:Number) {
if (isNaN (Number (txt_name.text))) {
txt_name.text = String (nan_val);
} else if (Number (txt_name.text) == 0) {
txt_name.text = String (zero_val);
} else if (Number (txt_name.text) < min_val) {
txt_name.text = String (min_val);
} else if (Number (txt_name.text) > max_val) {
txt_name.text = String (max_val);
}
return Number (txt_name.text);
}
//重画
redraw_btn.onRelease = function () {
delete line_mc.onEnterFrame;
init_prop ();
line_mc.onEnterFrame = main;
};
//选择是否跟踪
trace_check.onRelease = function () {
is_trace = !is_trace;
this.gotoAndStop (Number (is_trace) + 1);
};
//选择是否生长树叶
leaf_check.onRelease = function () {
leaf_grow = !leaf_grow;
this.gotoAndStop (Number (leaf_grow) + 1);
};
var keep_moving:MovieClip = this.createEmptyMovieClip ("keep_moving", 2);
var speed:Number = 10;
//移动line_mc
function moving (speedx:Number, speedy:Number) {
keep_moving.onEnterFrame = function () {
line_mc._x += speedx;
line_mc._y += speedy;
};
}
//停止移动
function stop_move () {
delete keep_moving.onEnterFrame;
}
//按钮控制
up_btn.onPress = function () {
moving (0, speed);
};
down_btn.onPress = function () {
moving (0, -speed);
};
left_btn.onPress = function () {
moving (speed, 0);
};
right_btn.onPress = function () {
moving (-speed, 0);
};
up_btn.onRelease = up_btn.onReleaseOutside = down_btn.onRelease = down_btn.onReleaseOutside = left_btn.onRelease = left_btn.onReleaseOutside = right_btn.onRelease = right_btn.onReleaseOutside = function () {
stop_move ();
};
//键盘控制
var key_lis:Object = new Object ();
key_lis.onKeyDown = function () {
switch (Key.getCode ()) {
case 37 :
moving (speed, 0);
break;
case 38 :
moving (0, speed);
break;
case 39 :
moving (-speed, 0);
break;
case 40 :
moving (0, -speed);
break;
}
};
key_lis.onKeyUp = function () {
stop_move ();
};
Key.addListener (key_lis);
init_prop ();
line_mc.onEnterFrame = main;