Чтение онлайн

на главную

Жанры

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Розенцвейг Гэри

Шрифт:

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

Подготовка ролика

В качестве примера использования случайных чисел создадим один из популярных Flash-эффектов: сымитируем старую кинопленку. Обычно данный эффект достигается средствами анимации. Аниматор помешает небольшие точки и трешинки в различные кадры ролика, а также показывает линию, проходяшую вдоль ролика и представляюшую царапину на пленке.

Все эти эффекты легко создать в ActionScript. К примеру, царапину можно создать, поместив

вдоль одной стороны ролика белую вертикальную линию.

Для того чтобы применить знания о случайных числах, вам прежде всего необходимо какое-нибудь исходное изображение, на которое будут накладываться царапины и пятна.

На рис. 5.5 показан фрагмент исходного ролика. В этом ролике пропеллер самолета врашается, а лиса моргает. Возможно, ваш ролик будет содержать больше анимации.

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

Помимо фонового изображения вам понадобятся клипы пятен и царапин для размешения поверх ролика. В примере Oldfilm.fla царапина представляет собой простую вертикальную линию внутри клипа. Пятно – это небольшой овал внутри другого клипа.

Создание кода

Сначала напишем код для царапины. Поместите копию клипа царапины на рабочее поле и назначьте ему следующий сценарий:

onClipEvent(load) {

wanderAmount = 300;

leftLimit = 10; rightLimit = 540;

chanceOfJump = 50;

xPosition = 275;

speed = 10;

chanceOfChange = 0;

}

onClipEvent(enterFrame) {

xPosition += speed;

this._x = xPosition;

chanceOfChange++;

if ((Math.random*wanderAmount < chanceOfChange or

(xPosition < leftLimit) or (xPosition > rightLimit)) {

speed = -speed;

chanceOfChange = 0;

}

if (Math.random*chanceOfJump == 1) {

xPosition = Math.random*(rightLimit-leftLimit)+leftLimit;

}

}

...

Примечание

При вычислении результата математических функций с числами Flash осушествляет операции в следующем порядке: умножение и деление выполняются перед сложением и вычитанием. К примеру, 2x3+4 будет равно 10. Для изменения порядка выполнения операций необходимо использовать скобки. Например, 2x(3+4) будет равно 14.

Первая часть сценария вводит некоторые переменные. Переменные leftLimit и rightLimit описывают границы линии по горизонтали. Код не позволит ей выйти за пределы этих значений. Переменная speed определяет, насколько перемешается линия в каждом кадре. Остальные переменные задают изменения анимации.

В каждом цикле кадра горизонтальная позиция, xPosition, клипа изменяется с помошью переменной speed. Она задает перемешение клипа на 10 пикселов влево или вправо. Переменная chanceOfChange увеличивается и определяет вероятность изменения. В случае, если переменная равна 1, сушествует один шанс из 300 (около 0,33 %), что изменение произойдет в данный момент. К тому времени, когда переменная chanceOfChange примет значение 150, вероятность изменения составит 150 из 300 или 50 %. Это хороший способ управления каким-либо событием, при котором оно происходит не слишком часто и не слишком редко. С помошью переменной chanceOfChange создается иллюзия случайности.

В данном случае "изменение" обозначает смену направления. Оно осушествляется путем изменения положительного значения переменной speed на отрицательное или наоборот. Изменение также происходит, если линия достигает правой или левой горизонтальной границы.

Другой вид изменения определяется переменной chanceOfJump и представляет собой перемешение линии в совершенно другое место. Настояшие царапины на пленке появляются в разных местах, и такое перемешение делает ролик более реалистичным.

Рисунок 5.6 . Эффект старого кино создается при помощи линии и двух точек, помещаемых поверх обычной Flash-анимации

Пятна на изображении представляют собой два постоянно перемешаюшихся клипа. В основном они используют те же приемы, что и ролик со случайными координатами, который уже рассматривался. Мы также добавим в сценарий вероятность случайного появления. Как и в предыдушем сценарии, она будет составлять от 0 %

до 100 %.

onClipEvent(load) {

chanceOfAppearing = 10;

chance = 0;

}

onClipEvent(enterFrame) {

chance++;

if (Random(chanceOfAppearing) < chance) {

this._x = Randon(550);

this._y = Random (400);

chance = 0;

} else {

this._x =– 100;

}

}

При запуске клипа вероятность появления случайного пятна на рабочем поле составляет один шанс из десяти. Если этого не происходит, в следующий раз будет два шанса из десяти. Так шанс возрастает до появления пятна.

К сведению

И пятна и линию лучше поместить справа, за пределами рабочего поля, чтобы их не было видно при запуске ролика. Затем они будут периодически появляться в случайных местах.

Убедитесь в том, что сценарии находятся на своих местах. При воссоздании ролика не стоит полностью полагаться на текст данной книги. В вашем распоряжении имеются примеры на Web-сайте. Поскольку ролик состоит из различных элементов, таких как копии клипов, местоположение сценария и имена объектов, рекомендуем вам вначале подготовить ролик на основе примера с Web-сайта, и только после этого создавать его самостоятельно с самого начала.

После выполнения данного упражнения у вас должно получиться несколько клипов и сценариев ActionScript, которые вы можете помешать в любую Flash-анимацию, чтобы создать эффект старого кино.

Другие возможности

Вы можете поместить на экран дополнительные пятна, скопировав клип пятна и убедившись, что ему назначен аналогичный сценарий. На экране может быть столько пятен, сколько вы хотите.

На экране также может быть две и более царапины. Различные части вашей анимации могут содержать различное количество царапин и пятен в зависимости от того, лучшего или худшего качества пленку вы хотите сымитировать.

Перемещение букв

Исходный файл: Textfly.fla

Во многих Flash-роликах по экрану перемешается текст. Сушествует множество способов создания этого эффекта, некоторые из них проиллюстрированы примерами, которые имеются на Web-сайте поддержки книги.

Задача проекта

В данном разделе рассказано, как создать ролик, где текстовая фраза разделяется на отдельные буквы, каждая из которых помешается в случайное место экрана. Затем эти буквы перемешаются по экрану и, соединяясь, вновь образуют исходную фразу.

На рис. 5.7 изображены четыре кадра из ролика, имюшегося на Web-сайте. Буквы спускаются сверху и выстраиваются в нужном порядке в нижней части экрана.

Рисунок 5.7 . Четыре кадра анимации, созданной при помощи ActionScript

Посмотрите ролик Textfly.fla на Web-сайте. Обратите внимание, где располагаются сценарии и как организован ролик в целом.

Подход

Ролик создается следующим образом: текст делится на отдельные буквы, каждая из которых представляет собой отдельный клип. Затем из случайных мест на экране эти клипы перемешаются в позиции, соответствуюшие исходному тексту.

Подготовка ролика

Ролик включает графическое изображение, расположенное в центре экрана и совершенно не зависяшее от текстового эффекта.

Внутри ролика находится один клип, содержаший букву "А". Клип был создан из небольшого текстового окна. В панели Properties ему было назначено свойство Dynamic Text и присвоено имя переменной letterText (рис. 5.8).

Рисунок 5.8 . В панели Properties вы можете назначить текстовой области свойство Dynamic Text и присвоить ей имя переменной

Затем текстовое поле преобразуется в клип при помоши команды Insert → Convert To Symbol. Копия эталона получает имя letter0 и помешается в то место, где находится первая буква фразы, в данном случае – в нижний левый угол.

Создание кода

В процессе выполнения программы из одного клипа создается несколько его экземпляров. В каждом новом цикле при помоши функции duplicateMovieClip создается новый экземпляр клипа для каждой из букв. После создания каждого экземпляра в него вводятся переменные endx и endy, задаюшие окончательную позицию букв в анимации. Значение переменной endy соответствует позиции _y клипа Letter0, значение переменной endx увеличивается слева направо.

Сценарий создает новые копии клипа для букв начиная с той, которая идет под номером 1. Первая буква (она имеет номер 0) использует уже сушествуюший клип Letter0.

Поделиться:
Популярные книги

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6