Случайность и эффект старого кино
Исходные файлы: Randomlocation.fla, Randommovement.fla, Oldfilm.fla.
Используя Flash исключительно в качестве инструмента анимации, можно добиться поразительных эффектов, но каждый раз анимация будет воспроизводиться одинаково. ActionScript имеет алгоритм выбора случайных чисел, благодаря чему в содержание ролика можно вносить элемент некой непредсказуемости.
Задача проекта
Задача данного раздела – научиться использовать случайные числа для создания визуальных эффектов. Возможно, вы захотите создать "эффект старого кино", когда на изображении кое-где появляются царапины и точки.
Подход
Во Flash 5 существует два способа генерирования случайных чисел. Первый – включить в код функцию Random, которая была в четвертой версии программы. Эта функция выдает значение в диапазоне от 0 до значения,на единицу меньшего, чем аргумент. К примеру, функция Random (5) выдаст значение от 0 до 4.
Во Flash 5 появилась функция Math.random (). Возможно, что в следующих версиях Flash функции Random уже не будет. Функция Math.random() выдает число с плавающей запятой от 0.0 до 1.0.
Чтобы получить значение вне диапазона [0..1], результат функции Math.Random () можно умножить на какое-нибудь число. Например, умножение результата на 500 даст значение в диапазоне от 0.0 до 500.0. Функция int округляет результат в меньшую сторону. Использование этой функции в нашем случае позволит получить целое значение в диапазоне от 0 до 499. Приведем пример:
n
=
int(Math.random()
*
500
);
Следующая короткая функция перемешает клип в случайное место экрана, имеющего размер 550x400.
onClipEvent(load) {
this
._x
=
Math.random()
*
550
;
this
._y
=
Math.random()
*
400
;
}
Использование вышеприведенной функции демонстрируется в ролике Randomlocation.fla. Запустите файл несколько раз, чтобы убедиться, что ролик каждый раз перемещается в другое место экрана.
Следующим шагом является создание случайных чисел и их использование для периодичности внесения хаотичности в ролик. Нижеприведенный сценарий перемешает клип в случайном направлении. Переменные dx и dy принимают значения в интервале от – 5 до 5 и задают величину изменения координат клипа _х и _у соответственно (фактически dx и dy определяют скорость перемещения клипа). Переменные dx и dy изменяют свои значения в случайные моменты времени.
onClipEvent(load) {
dx
=
Math.random()
*
10
-
5
;
dy
=
Math.random()
*
10
-
5
;
}
onClipEvent(enterFrame) {
this
._x
+
=
dx;
this
._y
+
=
dy;
if
(Math.random()
>
.
9
) {
dx
=
Math.random()
*
10
-
5
;
dy
=
Math.random()
*
10
-
5
;
}
}
Действие этого сценария демонстрируется в ролике Randommovement.fla. Эллипс перемещается по экрану случайным образом. Он даже может покинуть пределы рабочего поля, так как никаких ограничений в коде не задано.