Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Название:Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript краткое содержание
Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.
Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Данный клип используется для назначения сценария, который будет управлять роликом. Предположим, вам необходим ролик, создающий 10 копий эталона из библиотеки и немного поворачивающий их с каждым новым циклом.
Исходный файл: actionsMC.fla
Прежде всего создайте эталон. В диалоговом окне Symbol Linkage Properties установите флажок Export This Symbol и укажите имя "sample" (см. файл actionsMC.fla).
Код, написанный ниже, будет включен в клип "actions". Он будет находиться внутри программы обработки onClipEvent и состоять из двух частей. Первый обработчик будет отзываться на событие load. Событие load происходит при первом появлении клипа. Код выполняется один раз. В данном случае следует воспользоваться возможностью и создать 10 новых клипов:OnClipEvent (load) {
// Nicaaai 10 eeeiia.
for(i=0;i<10;i++) {
_root.attachMovie("sample","sample"+i,i);
// Onoaiaaeeaaai eii.aeiaou
_root["sample"+i]._x = i*50+50;
_root["sample"+i]._y = 100;
}
}Координаты клипов задаются одновременно с их созданием. Значение по вертикали равно 100, координата по горизонтали может иметь различные значения от 50 до 500. Результат показан на рис. 3.6.
Рисунок 3.6. Эти 10 клипов были созданы из эталона при помощи ActionScriptВторая часть кода находится в программе обработки onClipEvent(enterFrame). Код выполняется в каждом цикле клипа «actions». Если клип воспроизводится со скоростью 12 кадров в секунду, код будет выполняться также 12 раз в секунду.
onClipEvent (enterFrame) {
// Iiai.a.eaaai ea.aue eeei a oeeea.
for(i=0;i<10;i++) {
_root["sample"+i]._rotation += 5;
}
}Данный код циклически выполняется во всех клипах и поворачивает каждый их них на 5°. В результате на рабочем поле будет 10 вращающихся клипов.
Исходный файл: Gears.flaЯ также создал улучшенную версию ролика под названием Gears.fla. За исключением кода ролик ничем не отличается от предыдущего. В Gears.fla клипы расположены таким образом, что зубья шестеренок соприкасаются. Чтобы создать эффект работающего механизма, каждый ролик изначально повернут относительно предыдущего на 15°. Соседние зубья каждой шестеренки расположены с интервалом в 30°, поэтому зубъя соседних шестеренок сцепляются. Кроме того, каждая шестеренка вращается в направлении, отличном от направления вращения предыдущей. Вот как выглядит код:
onClipEvent (load) {
initialRotation = 0;
// Nicaaai 10 eeeiia.
for(i=0;i<10;i++) {
// I.eniaaeiyai i.a.aaiie eeei.
_root.attachMovie("sample","sample"+i,i);
// Onoaiaaeeaaai eii.aeiaou
_root["sample"+i]._x = i*37;
_root["sample"+i]._y = 100;
// Onoaiaaeeaaai ea.aiio neaao.uaio iiai.io
// ia 15° ioiineoaeuii i.aauaouaai.
_root["sample"+1]._rotation = initialRotation;
initialRotation += 15;
}
}
onClipEvent (enterFrame) {
// I.iaaaaai ana eeeiu .a.ac iaei.
for(i=0;i<10;i+=2) {
// Iiai.a.eaaai ii .aniaie no.aeea.
_root["sample"+i]._rotation += 5;
// Neaao.uee iiai.io i.ioea .aniaie no.aeee.
_root["sample"*(i+1)],_rotation -= 5;
}
}Чтобы понять, как устроен код, откройте ролик Gears.fh и поработайте с ним. Этот, а также многие другие коды, которые вы встретите в данной книге, невозможно объяснить только теоретически. Для того чтобы до конца понять устройство и работу примеров, следует поработать с ними.
Обработчики событий
Во Flash MX единственным способом отслеживания таких событий, как, например, enterFrame, было использование обработчиков onClipEvent в сценариях клипа. В версии 8 появилась возможность использовать обработчики прямо в сценарии кадра.
Вот простой пример. Этот сценарий помещен в кадр и посылает сообщение в окно Output при каждом обращении к кадру.root.onEnterFrame = function() {
trace("enterFrame Event");
}Вместо команды trace вы можете использовать другие команды аналогично тому, как это делалось на протяжении этого урока. Можно также определить имя для функции, обрабатывающей событие. Тогда предыдущий пример можно записать в таком виде:
root.onEnterFrame = myFunction;
function myFunction() {
trace("enterFrame Event");
}С помощью этого приема можно обращаться к любым событиям, например onMouseUp, onKeyUp, onLoad и т. д. Полное описание процедур обращения к событиям вы можете найти в документации. Пример использования данной технологии можно найти в главе 13 начиная с игры «Найди картинку».
Урок 21. Пересечение объектов
В играх часто происходят столкновения между различными объектами, причем иногда с весьма разрушительными последствиями. Давайте научимся создавать код, позволяющий отслеживать такие события, как пересечение двух объектов или, например, прохождение курсора над определенным объектом.
Основной способ обнаружения ситуации, в которой два объекта пересекаются или объект закрывает определенную точку экрана, – использовать функцию hitTest. Аргументом функции hitTest могут быть координаты какой-либо точки или ссылка на обьект, например клип, кнопку или текстовое поле.
Давайте начнем с проверки пересечения клипа с точкой. Предположим, вы хотите определить, находится ли курсор над определенным клипом на рабочем поле. Клипу следует назначить следующий код:
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse,_root._ymouse,true)) {
this._x = int(Math.random()*550);
this._y = int(Math.random()*400);
}
}Строка this.hitTest() обозначает, что функция hitTest применяется к текущему клипу. Она включает три параметра: горизонтальное и вертикальное положение мыши, а также булевый параметр (значения true/false). Последний параметр определяет, использует ли Flash для контроля пересечения прямоугольную область, в которой содержится данный клип, или точную форму изображения в клипе. Во втором случае параметр должен быть равен true.
Исходный файл: Runaway.flaВышеописанный код рассматривается в примере Runaway.fla. Если установить курсор над клипом, он переместится в случайную точку экрана.
Исходный файл: Collision.flaДля того чтобы определить, пересекаются ли два клипа, вы можете использовать один параметр – указатель на второй клип. В ролике Collision.fla на рабочем поле находятся два клипа. Клип большего размера называется "target", меньшего – "bullet". За пределами рабочего поля расположен клип "actions" со следующим кодом:
onClipEvent (enterFrame) {
// Auyniyai, iiiaea ee ioey a ieoaiu.
if (_root["target"].hitTest(_root["bullet"])) {
// Iiiaaaiea, oaaee.eaaai oaeu.
_root["target"]._xscale += 5;
_root["target"]._yscale += 5;
// Oae.aai ioe..
_root["bullet"]._x = 350;
} else {
// Iao iiiaaaiey, ioey eaoeo aaeuoa.
_root["bullet"]._x -= 5;
}
}Код задает перемещение снаряда на 5 пикселов. Если сталкиваются два клипа, мишень немного увеличивается за счет увеличения масштаба на 5 %. Горизонтальная координата снаряда принимает первоначальное значение, и он может опять начинать свое перемещение. Вы научились изменять масштаб клипа и его положение. Далее вы узнаете другие способы, с помощью которых можно изменить внешний вид клипа.
Урок 22. Изменения содержимого экранас помощью клипов
К сожалению, Flash не позволяет заменить один клип другим на рабочем поле. Единственным выходом будет удалить один клип и создать на его месте другой. Но если внешний вид клипа должен часто изменяться, необходим более быстрый способ.
Таким способом является создание клипа, который содержал бы все возможные состояния объекта. Например, если объектом является космический корабль, в ролик необходимо включить кадры, изображающие: космический корабль с выключенным двигателем, с включенным главным двигателем, включенным левым двигателем, с включенным правым двигателем, а также ряд кадров, представляющих взрывающийся космический корабль.
Читать дальшеИнтервал:
Закладка: