Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Название:Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript краткое содержание
Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.
Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
function reposition () {
rotation += (275-_xmouse)/1000;
plane =– (200-_ymouse)/100;
drawPoints();
}Функция repositionвызывается в каждом кадре из клипа, который находится за пределами рабочего поля и предназначен для запуска данной части кода при каждом его повторе.
onClipEvent(enterFrame) {
_root.reposition ( );
}Создание ролика практически завершено. Восемь точек на экране составляют куб, который врашается и поворачивается в зависимости от того, как пользователь перемешает мышь. Ролик можно посмотреть в файле 3dcubepoints.fla, размешенном на Web-сайте. Фрагмент этой анимации изображен на рис. 5.10.
Рисунок 5.10. Трехмерный куб, представленный восемью точками на экранеДобавление ребер
Восемь точек куба создают довольно точную иллюзию трехмерного объекта, но вы можете усовершенствовать модель. Если добавить линии для каждого ребра фигуры, она приобретет еше больше сходства с кубом, даже когда не врашается.
Во Flash динамические линии создаются на основе библиотечного эталона, содержашего простую линию. Линия начинается в центре клипа и тянется вправо и вниз. Она простирается ровно на 100 пикселов по горизонтали и по вертикали. В панели Properties необходимо установить толшину линии как hairline. На рис. 5.11 изображено основное окно Flash, которое содержит такую линию. Обратите внимание, что шаг сетки составляет 50x50 пикселов.
Рисунок 5.11. Клип простой линии используется для создания динамических линий на рабочем полеУ куба 12 граней, следовательно, вам необходимо 12 линий. Вместо того чтобы задавать координаты x, y и z обоих концов каждой линии, вы можете использовать две точки, уже имеющиеся в массиве points.Каждая линия имеет два параметра: р1и р2.
// Создаем массив из 12 линий для граней куба.
function makeLines() {
lines = new Array ();
lines[0] = {p1: 0, p2: 1};
lines[1] = {p1: 1, p2: 2};
lines[2] = {p1: 2, p2: 3};
lines[3] = {p1: 3, p2: 0};
lines[4] = {p1: 4, p2: 5};
lines[5] = {p1: 5, p2: 6};
lines[6] = {p1: 6, p2: 7};
lines[7] = {p1: 7, p2: 4};
lines[8] = {p1: 0, p2: 5};
lines[9] = {p1: 1, p2: 6};
lines[10] = {p1: 2, p2: 7};
lines[11] = {p1: 3, p2: 4};
for(i=0;i
attachMovie("line","line"+i,50+i)
}
}Вышеописанная функция создает 12 клипов. Каждый клип получает имя linex,где x– номер линии в массиве lines.
Чтобы динамически нарисовать во Flash линию, надо задать положение клипа, который ее содержит, в первой точке, затем измененить масштаб клипа и определить положение конца линии во второй точке. Так как начало линии находится в центре клипа, в первой точке задается ее верхний левый угол. Масштаб определяет протяженность линии по горизонтали и вертикали, поэтому, задав его значение равным разнице координат x и y начальной и конечной точек, вы разместите линию нужным образом.
К примеру, если вы хотите, чтобы ваша линия начиналась в точке с координатами (50,80) и заканчивалась в точке с координатами (170,210), то надо задать первую точку, присвоив переменным _x и _Y значения 50 и 80 соответственно. Затем вы должны вычислить разницу координат по горизонтали: 170 – 50 = 120. Разница координат по вертикали будет следующей: 210 – 80 = 130. Задав значения переменных _xscale и _yscale равными 120 и 130 соответственно, вы получите линию с начальными координатами (50,80) и конечными координатами (170,210).// Рисуем грани куба.
function drawLines() {
for(i=0;i
loc1 = plotPoint(points[lines[i].p1]);
loc2 = plotPoint(points[lines[i].p2]);
this["line"+ij._x = locl.x;
this["line"+i]._y = locl.y;
this["line"+i]._xscale = loc2.x-loc1.x;
this["line"+i]._yscale = loc2.y-loc1.y;
this["line"+i]._alpha = loc1.z+100;
}
}Внимание!
Важно, чтобы высота и ширина клипа линии была равна 100 пикселам. Тогда масштаб 100 % будет соответствовать 100 пикселам по ширине и высоте, 200 % – 200 пикселам и т. д. Параметр толщины линии должен быть определен как "hairline", чтобы масштабирование не оказывало никакого влияния на ее толщину. Линия любой другой толщины, например 1, изменит свой масштаб соответственно изменению переменных _xscale и _yscale.
Все, что осталось сделать для того, чтобы к кубу были добавлены грани, – это задать вызов функции makeLinesпри запуске ролика, а также функцию drawLinesиз функции reposition.На рис. 5.12 показан полученный результат. Весь ролик вы можете увидеть, запустив файл 3Dcube.fla на Web-сайте.
Рисунок 5.12. Трехмерный куб, состоящий из точек и линий
Другие возможности
Конечно, вы можете создавать фигуры более сложные, чем куб. На рис. 5.13 изображена небольшая модель космического корабля. Эта программа, содержащаяся в файле 3Dspaceship.fla на Web-сайте, обходится без функции drawPoints,хотя и использует массив pointsдля задания углов фигуры.
Рисунок 5.13. Простая трехмерная модель космического корабля; в ролике корабль вращается
Поэкспериментировав с наборами точек и линий, нетрудно создать множество различных трехмерных моделей. Вы можете сделать так, чтобы пользователь управлял вращением и наклоном объекта, или задать фиксированный наклон и вращение модели с постоянной скоростью. Можно даже изменять центральную точку экрана, чтобы создать иллюзию движения модели.
Глава 6 Игрушки и безделушки
• Волшебный хрустальный шар
• Музыкальный автомат
• Аналоговые часы
• Лавовая лампа
• Игра "Жизнь"
Прежде чем заняться созданием «полномасштабных» игр, давайте посмотрим, как устроены различные игрушки и безделушки. Их нельзя назвать собственно играми, поскольку у них нет цели и возможности ведения счета, однако они представляют собой приложения, которые могут работать автономно. Прежде всего рассмотрим пару элементарных интерактивных программ: волшебный хрустальный шар и музыкальный автомат, затем – два сложных, но неинтерактивных ролика: часы и лавовая лампа. В завершение мы рассмотрим очень старую и известную игру "Жизнь".
Волшебный хрустальный шар
Исходный файл: Crystalball.fla
Наверное, самой распространенной интерактивной программой, которую можно встретить в Internet, является программа-предсказатель, работающая на основе случайных чисел. Обычно она называется "Magic Eight Balls" (Восемь волшебных шаров), по имени популярной игрушки Tyco.
На рис. 6.1 показано, как может выглядеть подобная игра.
Рисунок 6.1. Лиса ответит на ваш вопрос после того, как вы щелкните по хрустальному шару
Задача проекта
После щелчка по шару лиса помашет лапами и пользователь получит ответ, который будет выбран наугад из списка.
Подход
Наиболее сложной задачей в данном ролике является создание изображений и анимации. Сценарий же довольно прост.
Подготовка ролика
Сначала рассмотрим, как выполняется анимация. Ролик состоит из двух частей. Первая представляет собой статический кадр, который выглядит, как показано на рис. 6.1. Ролик будет запушен после щелчка по хрустальному шару.
Читать дальшеИнтервал:
Закладка: