思路:把变幻线看成是一些点在运动,这些点之间有连线。每个点的运动规律类似,从某点以一定速度的沿x、y方向做直线运动,如果此点超出左右边界,x方向的速度取反,如果此点超出上下边界,则y方向的速度取反。因为这些点并不显示,所以创建空影片作为点,并用画线函数连接这些点。
思路有了,我们开始编写程序
源码:
var dot_num = 6;
if (!started) {
// 调用复制函数复制点
duplicate_dot();
started = true;
}
onEnterFrame = function () {
for (var n = 1; n<=dot_num; n++) {
dot_move(this["dot"+n], this["dot"+n].xspeed, this["dot"+n].yspeed);
}
line_draw();
};
// 复制函数,并设置点的初始位置和速度
function duplicate_dot() {
for (var n = 1; n<=dot_num; n++) {
// 创建空影片作为点,实例名为dot1、dot2、dot3...
createEmptyMovieClip("dot"+n, n);
// 让这些点在场景中随机分布
this["dot"+n]._x = random(400);
this["dot"+n]._y = random(300);
// 设置这些点向x、y方向运动的速度
this["dot"+n].xspeed = random(20)+10;
this["dot"+n].yspeed = random(20)+10;
}
}
// 点的运动函数,obj为影片,xspeed,yspeed分别为x,y方向运动的速度
function dot_move(obj, xspeed, yspeed) {
with (eval(obj)) {
// 让影片运动
_x += xspeed;
_y += yspeed;
// 超出左右边界时,xspeed取反
if (_x>400) {
_x = 400;
xspeed = -xspeed;
}
if (_x<0) {
_x = 0;
xspeed = -xspeed;
}
// 超出上下边界时,yspeed取反
if (_y>300) {
_y = 300;
yspeed = -yspeed;
}
if (_y<0) {
_y = 0;
yspeed = -yspeed;
}
}
}
// 画线函数,连接各个点
function line_draw() {
createEmptyMovieClip("line", 5000);
with (line) {
// 定义线的大小,颜色、透明度
lineStyle(1, 0xFF00FF, 100);
// 画线的起点
moveTo(dot1._x, dot1._y);
// 连接点dot1到dot2...dot10
for (var n = 2; n<=dot_num; n++) {
lineTo(this["dot"+n]._x, this["dot"+n]._y);
}
// 连接到dot1,构成一个多边形
lineTo(dot1._x, dot1._y);
}
}
把以上程序输入到flash MX的帧中,一个简单的变幻线效果就完成了。有兴趣的朋友可加入颜色、线型等变化。快来试试看吧!