Лавовая лампа
// Перемещаем пузырьки,
function
moveBubbles() {
for
(i
=
0
; i
// Узнаем текущую координату.
y
=
_root[
"Bubble"
+
i]._y;
// Останавливаемся, если достигнута нижняя граница
// объекта "лампа".
if
((bubbles[i].speed
>
0
) and (y
>
bottom)) {
bubbles[i].speed
=
0
;
// Останавливаемся, если достигнута верхняя граница
// объекта.
}
else
if
((bubbles[i].speed
<
0
) and (y
<
top)) {
bubbles[i].speed
=
0
;
// Продолжаем перемещать пузырьки.
}
else
{
// Перемещаем.
_root[
"Bubble"
+
i]._y
=
y
+
bubbles[i].speed;
// Изменяем размеры пузырька.
height
=
_root[
"Bubble"
+
i]._yscale;
width
=
_root[
"Bubble"
+
i]._xscale;
if
(height
>
width)
height
-
=
1
;
_root[
"Bubble"
+
i]._yscale
=
height;
// Создаем новый пузырек с вероятностью 1/30.
if
(Math.random()
*
30
<
=
1
) {
newBubble();
}
}
}
Функция newBubble проверяет массив bubbles на наличие неиспользуемых мест для пузырьков. Затем она создает пузырек в нижней или верхней части лампы. Размер пузырька задается случайным числом. Его длина в три раза больше, чем ширина. По мере перемещения пузырька эта разница постепенно исчезает.
function
newBubble() {
for
(i
=
0
; i
<
numBubbles; i
+
+
) {
// Находим пустое место для пузырька,
if
(bubbles[i].speed
=
=
0
) {
// Создаем пузырек в верхней части лампы.
if
(Math.random()
<
.
5
) {
bubbles[i].speed
=
1
;
_root[
"Bubblen"
+
i]._y
=
-
40
;
// Создаем пузырек в нижней части лампы.
}
else
{
bubbles[i].speed
=
-
1
;
_root[
"Bubble"
+
i]._y
=
340
;
}
// Устанавливаем размер пузырька.
size
=
40
+
Math, random()
*
40
;
_root[
"Bubble"
+
i]._xscale
=
size;
_root[
"Bubble"
+
i]._yscale
=
size
*
3
;
_root[
"Bubble"
+
i]._x
=
10
+
Math.random()
*
80
;
// Готово.
break
;
}
}
}
Три вышеприведенные функции составляют основу ролика Lava Lamp который вы можете просмотреть, запустив файл Lavalamp.fla.
Другие возможности
Изображение стекла было создано аналогично пузырькам. Благодаря применению свойства альфа-прозрачности сквозь него видны пузырьки Для того чтобы ролик вписывался в ваш сайт или проект, вы можете украсить его своим логотипом.