greyshaman
20.05.2002, 12:00
Этот скрипт генерирует молнии.
Дискретизированную кривую можно описать через приращение на угол к направлению последнего отрезка.
На этом алгоритме можно строить криволинейные пути.
Молния это один из вариантов применения.
//собственно скрипт вставляется в 1 первый кадр и в перед.
// инициализация
rad = Math.PI/180;
_root.createEmptyMovieClip("ligh", 3);
lcol=new Color(_root.ligh);
//---------------------
//функция генерирования молнии
_root.gl = function () {
angle=random(180);
with (_root.ligh) {
clear();
f=0;
s=10;
x=random(600)+100;y=random(60)+5;
moveTo(x, y);
f=0;
n=0;
do {
f++;
n++;
if(s>0.1)s-=0.02;
if(s>4) s-=0.05;
// генерация очередного участка кривой
// с - количество сегментов
// da - приращение
// z - показатель для приращения если 0 то прямая
if (f>=c) {
c = random(6)+1;
da = random(12)+3;
z = random(3)-1;
f = 0;
}
angle += z*da;
if(angle>180){z=(-1)*z;angle= 180;}
if(angle<0){z=(-1)*z;angle=0;}
x += 3*Math.cos(angle*rad);
y += 3*Math.sin(angle*rad);
lineStyle(s, 0xffffff);
lineTo(x, y);
cmp= y>550 || x>800 || x<0;
} while (!cmp);
}
};
// -------- gl end ------------------
_root.onEnterFrame=function(){
cl++; // переменная для выбора цвета
fr++; // длинна визуализации
if(fr==23){_root.gl();fr=0;}
if(cl==1){lcol.setRGB(0xffffff)}else{
lcol.setRGB(0xddccff);cl=0;}
}
stop();
best regards,
Grey
Дискретизированную кривую можно описать через приращение на угол к направлению последнего отрезка.
На этом алгоритме можно строить криволинейные пути.
Молния это один из вариантов применения.
//собственно скрипт вставляется в 1 первый кадр и в перед.
// инициализация
rad = Math.PI/180;
_root.createEmptyMovieClip("ligh", 3);
lcol=new Color(_root.ligh);
//---------------------
//функция генерирования молнии
_root.gl = function () {
angle=random(180);
with (_root.ligh) {
clear();
f=0;
s=10;
x=random(600)+100;y=random(60)+5;
moveTo(x, y);
f=0;
n=0;
do {
f++;
n++;
if(s>0.1)s-=0.02;
if(s>4) s-=0.05;
// генерация очередного участка кривой
// с - количество сегментов
// da - приращение
// z - показатель для приращения если 0 то прямая
if (f>=c) {
c = random(6)+1;
da = random(12)+3;
z = random(3)-1;
f = 0;
}
angle += z*da;
if(angle>180){z=(-1)*z;angle= 180;}
if(angle<0){z=(-1)*z;angle=0;}
x += 3*Math.cos(angle*rad);
y += 3*Math.sin(angle*rad);
lineStyle(s, 0xffffff);
lineTo(x, y);
cmp= y>550 || x>800 || x<0;
} while (!cmp);
}
};
// -------- gl end ------------------
_root.onEnterFrame=function(){
cl++; // переменная для выбора цвета
fr++; // длинна визуализации
if(fr==23){_root.gl();fr=0;}
if(cl==1){lcol.setRGB(0xffffff)}else{
lcol.setRGB(0xddccff);cl=0;}
}
stop();
best regards,
Grey