Иллюстрированный самоучитель по созданию Flash-игр

Случайность и эффект старого кино

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.