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

на главную - закладки

Жанры

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

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

Шрифт:

on (press) {

testVariable++;

}

Кнопка изменяет значение переменной testVariable на уровне того клипа, в котором находится данная кнопка. Кнопка, расположенная на рабочем поле, изменяет переменную testVariable на главном уровне. Кнопка в клипе «firstMC» изменяет переменную testVariable в «firstMC», кнопка в «secondMC» – переменную testVariable в «secondMC».

Следует отметить, что три переменные с именем testVariable являются тремя разными переменными. Находясь на разных уровнях, они никак не связаны друг с другом.

Нажатие одной из кнопок меньшего размера изменяет значение

переменной testVariable только на том уровне, где она расположена.

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

Все три кнопки находятся на рабочем поле, а не внутри клипов. Первая кнопка изменяет значение testVariable, не указывая определенный клип. В результате изменяется переменная testVariable рабочего поля.

Вторая кнопка указывает переменную testVariable внутри клипа «firstMC». Код выглядит следующим образом:

on (press) {

firstMC.testVariable++;

}

В результате изменяется переменная в клипе «firstMC». Для изменения переменной внутри клипа «secondMC», необходимо учитывать, что «secondMC» находится внутри «firstMC» и программе нужно это указать.

on (press) {

firstMC.secondMC.testVariable++;

}

Во всех приводимых до сих пор примерах имена копий клипов указывались прямо в коде. Существует и другой способ обращения к клипам – свойство _root:

_root["firstMC"].testVariable++;

Это удобно, если имя копии клипа содержит пробел, в таком случае данный метод является единственно возможным. Свойство _root используется также при создании более сложного кода, где надо представить имя клипа как строку для неявного указания этого имени. Применение данного метода будет рассмотрено в следующем разделе.

Урок 19. Копирование клипов

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

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

Существует два способа создания клипов: копирование существующего клипа и создание клипа из эталона, находящегося в библиотеке, но не используемого изначально на рабочем поле.

В первом случае используется функция duplicateMovieClip, при помощи которой создается дубликат существующего клипа. Приведем пример:

firstclip.duplicateMovieClip(«newclip»,0);

Функция duplicateMovieClip запускается копируемым клипом. Поэтому при ее использовании упоминается имя этого клипа, в данном случае «firstclip». Функция также содержит два параметра: имя новой копии клипа и уровень нового клипа.

г\ х "" (

Это может немного вас запутать. Термин уровень здесь (применительно к команде duplicateMovieClip) означает порядок расположения клипов. В предыдущем же разделе данный термин использовался для описания включения одного клипа в другой.

В случае, если клип создан на уровне 0, как в предыдущем примере, он располагается под клипом уровня 1. Клип уровня 1 находится под клипом уровня 2 и т. д.

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

Исходный файл: DuplicateMovieClip.fla В примере DuplicateMovieClip.fla демонстрируется применение данной команды. В первом и единственном кадре главной временной шкалы переменная level имеет значение 0. На рабочем поле находится кнопка "new MC", а также клип "firstclip". Каждый раз при нажатии кнопки выполняется следующий код:

on (press) {

// Aoaee.oai ia.aue eeei.

firstclip.duplicateMovieClip("newclip"+level,level);

// Iiiauaai aai a neo.aeio. iiceoe..

_root["newclip"+level]._x = int(Math.random*550);

_root["newclip"+level]._y = int(Math.random*400);

// Oaaee.eaaai n.ao.ee.

level++;

}

...

Примечание

Обратите внимание, что в коде ActionScript я в первый раз использовал комментарий. Строки комментария начинаются с двух косых черт. Содержание строки, следующей за косыми чертами, полностью игнорируется Flash и предназначено для того, чтобы вы понимали, какое действие выполняет код. Чем длиннее блоки вашего кода, тем больше они нуждаются во вспомогательных комментарих. Комментарии используются для последующего редактирования кода, а также для того, чтобы вашему коллеге было легче его понять.

В данной программе обработки переменная level используется по-разному. Во-первых, для присвоения имени новому клипу (сначала клипу присваивается имя newclipO). Переменная также отображает уровень клипа.

В конце программы значение переменной level увеличивается на 1. Таким образом, следующий создаваемый клип будет называться level1 и располагаться на уровне 1.

С помощью функции Math.random мы задаем будущему клипу случайные координаты в пределах рабочего поля. Обратите внимание, что ссылка на клип осуществляется при помощи синтаксической структуры _root[].

Другой способ создания новых клипов – использование функции attachMovie. Для выполнения данной функции не требуется, чтобы клип находился на рабочем поле. Он должен просто быть в библиотеке. Однако, если клип находится в библиотеке и не используется на рабочем поле, Flash автоматически не включит его в конечный swf-файл. Для того чтобы клип был включен в конечный файл, его необходимо выбрать в библиотеке и настроить его параметры в диалоговом окне Symbol Linkage Properties, которое вызывается из меню Options. Диалоговое окно изображено на рис. 3.5.

Рисунок 3.5 . Диалоговое окно Symbol Linkage Properties позволяет включать клип в swf-файл, даже если он не используется на рабочем поле

В окне следует установить флажок Export for ActionScript (Экспортировать для ActionScript). Затем вы должны придумать имя эталона, на которое будет ссылаться код. Я обычно использую имя эталона из библиотеки.

Исходный файл: AttachMovie.fla Первым параметром функции attachMovie является имя из диалогового окна Symbol Linkage Properties. Второй параметр – это имя копии клипа на рабочем поле, третий – уровень клипа. Код данной кнопки, содержащийся в файле AttachMovie.fla, за исключением одной строки, полностью совпадает с кодом примера DuplicateMovieClip.fla.

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

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Жандарм 3

Семин Никита
3. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Отмороженный 11.0

Гарцевич Евгений Александрович
11. Отмороженный
Фантастика:
боевая фантастика
рпг
попаданцы
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 11.0

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VII

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар