Графические эффекты

Часто для придания баннеру динамичности используется постоянная анимация фона. Это может быть падающий снег, эффекты блеска и другие анимированные элементы. Рассмотрим пример.

Создадим клип mcBg и в нем нарисуем фон (рисунок 42).


Рисунок 42. Клип mcBg с красной заливкой

Внутри клипа mcBg создадим клип с именем mc0, который и будет анимирован. Это может быть снежинка, капля дождя, звезда или другое. Такой элемент мы создаем в одном экземпляре, а потом программно размножаем и анимируем необходимым образом.

Также в клипе mcBg создаем слой as. Клип mcBg будет обладать своим скриптом, не зависящим от основных скриптов баннера.

code mcBg [frame 1]
1 //объявляем массив с именем aMc, в котором будем хранить клипы анимируемых
2 //элементов
3 var aMc:Array=new Array();
4 //числовая переменная, количество элементов
5 var num:Number=40;
6 //числовая переменная
7 var i:Number=0;
8 //добавляем в конец массива aMc элемент (клип mc0)
9 aMc.push(mc0);
10 //открываем цикл
11 for(i=1; i<num; i++){
12 //создаем дубликат клипа mc0, который будет назван [«mc»+i],
13 //т.е mc1, mc2, mc3 и т.д.
14 mc0.duplicateMovieClip(«mc»+i, i);
15 //располагаем дубликат по координате x в случайное место ролика
16 this[«mc»+i]._x=random(300);
17 //располагаем дубликат по координате y в случайное место ролика
18 this[«mc»+i]._y=random(200);
19 //поворачиваем дубликат на случайный угол
20 this[«mc»+i]._rotation=random(360);
21 //задаем дубликату случайное значение прозрачности
22 this[«mc»+i]._alpha=10+random(60);
23 //задаем переменной _vy дубликата случайное значение от 5 до 24,
24 //переменная будет означать скорость движения по y
25 this[«mc»+i]._vy=5+random(20);
26 //задаем переменной _vr дубликата случайное значение от — 20 до 20,
27 //переменная будет означать скорость поворота
28 this[«mc»+i]._vr=20-random(41);
29 //добавляем в конец массива aMc элемент (дубликат)
30 aMc.push(this[«mc»+i]);
31 }//закрываем цикл
32 //объявляем функцию onEnterFrame, которая срабатывает автоматически FPS раз
33 //в секунду
34 onEnterFrame=function(){
35 //открываем цикл
36 for(i=1; i<num; i++){
37 //сдвигаем i-ый элемент массива aMc по оси y
38 aMc[i]._y+=0.4*aMc[i]._vy;
39 //поворачиваем i-ый элемент массива aMc
40 aMc[i]._rotation+=0.3*aMc[i]._vr;
41 //проверяем, если i-ый элемент массива aMc ниже, чем 200 px,
42 //поднимаем его на значение -20 (шкала y перевернута)
43 if(aMc[i]._y>200){
44 aMc[i]._y=-20;
45 }
46 }//закрываем цикл
47 }
  • duplicateMovieClip — глобальная функция, позволяющая создать копию существующего клипа. Дублирование всегда начинается с первого кадра, вне зависимости от того, на каком кадре был клип. Дублированный клип наследует все преобразования (поворот, масштаб и прочее), применявшиеся к target, но не наследует его переменные временной диаграммы target.

Синтаксис:

  • duplicateMovieClip(target, newname, depth);
  • target.duplicateMovieClip( newname, depth);
  • target.duplicateMovieClip( newname, depth, obj});

Аргументы:

  • target — клип, который нужно дублировать.
  • newname — строка, которая станет именем экземпляра дублируемого клипа.
  • depth — целое число, показывающее уровень стека программно создаваемых клипов, на который должен быть помещен продублированный клип. Клипы на более низких уровнях визуально помещаются позади клипов на более высоких уровнях. Если назначаемое значение depth уже используется, прежний клип удаляется, а его место занимает новый клип.
  • obj — необязательный аргумент (тип object). Значения свойств нового клипа.

Чтобы изменить количество падающих элементов, достаточно поменять значение переменной num. Можно поменять скорость падения _vy, или добавить дополнительно движение по оси x.

Ниже представлены другие примеры графических эффектов:

Автор: Юрий Гусак.