Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Название:Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript краткое содержание
Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.
Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
newValue = false;
}
}
// Меняем текущий кадр клипа mc.
grid[y][x] = newValue;
if (newValue) {
mc.gotoAndStop(2);
} else {
mc.gotoAndStop(1);
}
}
}
}Функция duplicateGrid()создает копию массива grid и возвращает ее в качестве своего значения.
// Создаем копию массива grid.
function duplicateGrid() {
var newGrid = new Array();
for(y=0;y<15;y++) {
var temp = new Array();
for(x=0;x<25;x++) {
temp.push(grid[y][x]);
}
newGrid.push(temp);
}
return(newGrid);
}Да, но почему мы должны пользоваться функцией duplicateGrid(), вместо того чтобы просто приравнять массив baseGridмассиву grid?Потому что иначе у нас не было бы реальной копии массива. Вместо этого и gridи baseGridссылались бы на один и тоже массив и изменения в массиве gridпоявлялись бы и в массиве baseGrid.Клип "actions" содержит обработчик onClipEvent (enterFrame), который вызывает функцию runCicleпри каждом обращении к кадру. Эта функция проверяет глобальную переменную runningи запускает cycle,если ее значение истинно (true).
function runCycle() {
if (running) {
cycle();
}
}Рассмотрим теперь сценарии кнопок. Каждая кнопка содержит обработчик вида on(release), который вызывает одну из следующих функций. Первая (кнопка Run) задает глобальной переменной runningзначение true.
function startCycle() {
running = true;
}Если же пользователь нажмет кнопку Step, то функция cycleбудет вызвана лишь один раз и переменная runningне изменит своего значения.
function stepCycle() {
cycle();
}При нажатии кнопки Stop переменной runningприсваивается значение false.
function stopCycle() {
running = false;
}И наконец, нажатие кнопки Clear очищает массив gridи все ячейки сетки.
function clear() {
for(y=0;y<15;y++) {
for(x=0;x<25;x++) {
grid[y][x] = 0;
this["gridbox "+x+" "+y].gotoAndStop(1);
}
}
running = false;
}Осталось только рассмотреть код, который находится на кнопке внутри каждого клипа-ячейки. Этот сценарий определяет состояние ячейки. В функции creatGrid мы определили переменные xи yдля каждого клипа. Это позволяет установить соответствие между ячейками и элементами массива и вносить изменения в массив при изменении состояния ячейки.
on (release) {
if (_currentframe == 1) {
gotoAndStop(2);
_parent.grid[y][x] = true;
} else {
gotoAndStop(1);
_parent.grid[y][x] = false;
}
}
К сведению
Кроме рассмотренных функций в сценарии кадра имеется код, вызывающий функцию creatGrid,и команда stop(). Возможна также другая реализация. Дело в том, что игра нуждается в получении определенных данных для запуска. Ведь если вы нажмете кнопку Run при пустом игровом поле, то ничего не произойдет. Поиграйте с колонией, изображенной на рис 6.15. Ее называют «маленький взрыв». Программисты, впервые реализовавшие игру «Жизнь», придумали имена некоторым таким «цивилизациям».
Попробуйте создать свои колонии или поищите в Интернете уже существующие. Поиск по ключу "game of life" откроет вам множество страниц с самыми разнообразными конфигурациями.
Другие возможности
Дополнительно вы можете добавить в игру кнопки для загрузки каких-то уже существующих колоний. Это избавит вас от необходимости каждый раз создавать их заново.Глава 7 Игрушки-конструкторы
• Составь лису методом «Перетащи и положи»
• Создай лису методом "Нажми и измени"
• Альбом для рисования
• Музыкальный миксер
• Танцующая лиса
В данной главе мы рассмотрим Flash-ролики, которые позволяют пользователю что-либо создавать. Подобные игрушки задействуют творческие способности человека. В них нет цели или счета, а только безграничные возможности пофантазировать.
Вначале мы создадим программу, позволяющую строить изображение из различных частей. Существует несколько разновидностей подобной программы. С одной стороны, пользователь может подставлять части к фиксированному объекту. С другой стороны, вы можете зафиксировать положение частей и предоставить пользователю возможность изменять форму каждой из них.
Затем мы создадим программу, предназначенную для рисования линий и фигур на чистом листе. И наконец, разработаем программу, которая будет составлять песни из различных музыкальных фрагментов.Составь лису методом «Перетащи и положи»
Исходный файл: Makeafox-drag.fla
Многие компьютерные игры созданы по подобию игрушек докомпьютерной эры. Одна из таких старых игрушек – "Mister Potato Head" (Господин картофельная голова). Она представляла собой набор пластиковых частей тела, которые ребенок мог прикрепить к картошке и сделать смешного человечка. Позже вместо картошки стали использовать пластиковое туловище.
Задача проекта
Задача этого проекта – создать приложение, которое позволит пользователю присоединять части тела лисы к неподвижному туловищу и так составлять изображение зверька. Метод drag-and drop (перетащи и положи) должен быть знаком всем, кто умеет работать с компьютером.
Подход
Программа должна распознавать нажатие и отпускание кнопки мыши. Она должна определять, над каким клипом находится в данный момент курсор, и предоставлять возможность перетаскивания выбранного клипа при нажатой кнопке мыши.
Это не так легко, как кажется. Для того чтобы определить, какой клип выбрал пользователь, необходимо сравнить позицию курсора мыши с областью, занимаемой каждым клипом.
Подготовка ролика
Для создания игрушки-конструктора, работающей по методу drag-and-drop, прежде всего необходимо иметь различные графические изображения. На рис. 7.1 в правой части изображено туловище, в левой – различные изображения рук, ног, ртов и глаз.
Рисунок 7.1. Изображенные слева части тела можно переместить к расположенному справа туловищу
Ролик можно запустить, открыв файл Makeafox-drag.fla на Web-сайте. Вы можете выбрать любую часть тела и переместить ее в любую часть экрана.
Создание кода
Если вы уже работали во Flash, вы можете подумать, что это легко – необходимо просто использовать клипы частей тела и команды startDrag и stopDrag. На самом деле такой подход только все усложнит. Я не любитель команды startDrag и не буду использовать ее здесь, поскольку перемещать с ее помощью элементы по рабочему полю не так уж и просто.
Представив каждую часть тела в виде кнопки, вы можете назначить ей обработчик события on(press) и применить команду startDrag. Однако кнопка не может служить в качестве цели команды startDrag, такой целью может быть только клип. Если же вы представите их в виде клипов, им нельзя будет назначить функцию on(press), так как она используется только с кнопками. Еще одним вариантом является представление каждой части тела как клипа с кнопкой внутри. Здесь можно легко запутаться, так как каждый раз при добавлении в ролик новой части вам придется выполнить несколько действий.
Лучшим выходом будет написать код, выполняющий процедуру drag-and-drop самостоятельно. Отдельным частям не будет назначено никакого кода, благодаря чему их будет легко создавать и добавлять новые.
Читать дальшеИнтервал:
Закладка: