Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Шрифт:
Подготовка ролика
В данном ролике будет использоваться один элемент – спиральная фигура. Поместите его в центр рабочего поля. Начальный цвет спирали должен быть белым, а фоновый – черным.
Смена цветов и вращение
Ролик будет состоять из одного сценария, назначенного клипу с изображением спирали.
Переменная n, участвуюшая в сценарии, содержит способ изменения цвета. Значение цвета будет соответствовать числу из предыдушего списка. Так, например, если n будет равно 3, значение красной составляюшей увеличится.
Значение переменной n сначала равно 1, затем увеличивается до 6 и далее цикл повторяется. Ниже приведена часть кода c последовательностью if…then,
if (n == 1) {
colorTransform.rb -= 5;
if (colorTransform.rb ==0) n = 2;
} else if (n == 2) {
colorTransform.bb -= 5;
if (colorTransform.bb ==0) n = 3;
} else if (n == 3) {
colorTransform.rb += 5;
if (colorTransform.rb == 255) n = 4;
} else if (n == 4) {
colorTransform.gb -= 5;
if (colorTransform.gb == 0) n = 5;
} else if (n == 5) {
colorTransform.bb += 5;
if (colorTransform.bb == 255) n = 6;
} else if (n == 6) {
colorTransform.gb += 5;
if (colorTransform.gb == 255) n = 1;
}Примечание
Оператор += используется для прибавления к переменной определенного числа. Например, код n += 5 прибавляет 5 к значению n. Этот код аналогичен коду n = n + 5. Оператор =- используется для вычитания определенного числа из переменной.
Значение переменной n проверяется в каждой части выражения if.then. В случае совпадения одна из трех цветовых составляюших объекта colorTransform изменяется. После окончания изменений, сама переменная n меняет свое значение на следующие.
Полная программа представляет собой обычный клип ActionScript с функциями onClipEvent(load) и onClipEvent(enterFrame). Первая вводит объекты цвета и преобразования, вторая выполняет постепенное изменение цветов.
Кроме того, мы сделаем так, чтобы клип врашался. Врашение достигается постепенным увеличением значения параметра _rotation.
onClipEvent(load) {
// Создаем объект цвета и цветовой трансформации.
spiralColor = new Color(this);
colorTransform = {rb:255, bb:255, gb:255};
// Вначале n равно единице.
n = 1;
}
onClipEvent(enterFrame) {
// Определяем, какую составляющую необходимо изменить.
if (n == 1) {
colorTransform.rb -= 5;
if (colorTransform.rb == 0) n = 2;
} else if (n == 2) {
colorTransform.bb -= 5;
if (colorTransform. bb == 0) n = 3;
} else if (n == 3) {
colorTransform.rb += 5;
if (colorTransform. rb == 255) n = 4;
} else if (n == 4) {
colorTransform.gb -= 5;
if (colorTransform. gb == 0) n = 5;
} else if (n == 5) {
colorTransform.bb += 5;
if (colorTransform.bb == 255) n = 6;
} else if (n == 6) {
colorTransform.gb += 5;
if (colorTransform. gb == 255) n = 1;
}
// Задаем новый цвет.
spiralColor.setTransform(colorTransform);
// Вращаем спираль.
this._rotation += 5;
}Примечание
Объект this обозначает обращение клипа к самому себе. Так как сценарий назначен клипу, использование this будет обозначать, что команда, следующая после this, относится к самому клипу, а не к другому клипу или ролику.
Примечание
Параметр клипа _rotation используется для поворота клипа на определенное количество градусов. Он может иметь как положительные, так и отрицательные значения. Если вы укажете значение больше 360°, Flash автоматически преобразует его. К примеру, при вводе значения 370° клип будет повернут на 10°.
На рис. 5.4 изображен фрагмент ролика Spiral.fla.
Рисунок 5.4. Спираль изменяет цвет и вращается
Хотя этот же эффект можно получить и средствами классической анимации, ActionScript позволяет сделать это намного быстрее.
К сведению
Частота смены кадров ролика определяет скорость врашения спирали и смены цветов. Максимальная частота во Flash 8 – 120 кадр/с. Однако следует иметь в виду, что частота смены кадров напрямую зависит от быстродействия компьютера.
Другие возможности
Изменив оператор += на —= в последней строке кода, вы заставите спираль врашаться в обратном направлении. Вы можете также изменить способ смены цветов, изменив значения красной, зеленой и синей составляюших.Случайность и эффект старого кино
Исходные файлы: Randomlocation.fla, Randommovement.fla, Oldfilm.fla
Используя Flash исключительно в качестве инструмента анимации, можно добиться поразительных эффектов, но каждый раз анимация будет воспроизводиться одинаково. ActionScript имеет алгоритм выбора случайных чисел, благодаря чему в содержание ролика можно вносить элемент некой непредсказуемости.
Задача проекта
Задача данного раздела – научиться использовать случайные числа для создания визуальных эффектов. Возможно, вы захотите создать «эффект старого кино», когда на изображении кое-где появляются царапины и точки.
Подход
Во Flash MX сушествует два способа генерирования случайных чисел. Первый – включить в код функцию Random, которая была в четвертой версии программы. Эта функция выдает значение в диапазоне от 0 до значения, на единицу меньшего, чем аргумент. К примеру, функция Random(5) выдаст значение от 0 до 4.
Во Flash MX появилась функция 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, который размешен на Web-сайте поддержки книги. Запустите файл несколько раз, чтобы убедиться, что ролик каждый раз перемешается в другое место экрана.
Следуюшим шагом является создание случайных чисел и их использование для периодичности внесения хаотичности в ролик.
Нижеприведенный сценарий перемешает клип в случайном направлении. Переменные dx и dy принимают значения в интервале от -5 до 5 и задают величину изменения координат клипа _x и _y соответственно (фактически dx и dy определяют скорость перемешения клипа). Переменные dx и dy изменяют свои значения в случайные моменты времени.