Случайность и эффект старого кино
Исходные файлы: 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. Эллипс перемещается по экрану случайным образом. Он даже может покинуть пределы рабочего поля, так как никаких ограничений в коде не задано.
