Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Шрифт:
on (keyPress "r") {
circle._x++;
}Совет
Имейте в виду, что событие keyPress чувствительны к регистру. Это значит, что если кнопке назначена клавиша "г", она не будет реагировать на нажатие комбинации Shift+R.
Исходный файл: Keyboardbutton.fla Для обозначения движений лучше использовать клавиши с изображением стрелок, а не буквы. Для указания данных клавиш используется специальный синтаксис. Ниже приведен сценарий, позволяющий пользователю перемещать клип в четырех направлениях. Вы можете также найти данный сценарий на Web-сайте в файле Keyboardbutton.fla.
on (keyPress
circle._x++;
}
on (keyPress "<Left>") {
circle._x—;
}
on (keyPress "<Up>") {
circle._y—;
}
on (keyPress "<Down>") {
circle._y++;.
}Клавиши не очень удобно использовать в ситуациях, требующих быстрых и плавных движений. В таких случаях при помощи кодового объекта Key вы сможете проверить, нажата ли кнопка.
Совет
Если для проверки нажатия клавиши используется кнопка, при удерживании клавиши пользователем действие будет повторяться. Это происходит потому, что большинство компьютеров запрограммировано на повторение при удерживании клавиши. Время между первым и вторым нажатием одной и той же кнопки, а также между последовательным нажатием разных кнопок определяется параметрами настройки клавиатуры системы пользователя. В играх, где пользователь может удерживать кнопку для повторения действия, не следует полагаться на функциональные возможности клавиатуры. Лучше применять функцию Key.isDown, которая рассматривается в данном разделе.
Функция Key.isDown позволяет проверить состояние клавиши. Например, чтобы проверить, нажата ли клавиша r, используется следующий код:
if (Key.isDown("r")) {
circle._x++;
}Исходный файл: Keyisdown.fla Такой код не может и не должен быть назначен кнопке. Он должен быть назначен клипу "actions", в данном случае в файле Keyisdown.fla. Код находится внутри программы обработки onClipEvent(enterFrame), поэтому проверка происходит в каждом кадре. Код проверяет нажатие клавиш с изображением стрелок, которые обозначаются специальными константами наподобие Key.RIGHT.
onClipEvent(enterFrame) {
if (Key.isDown(Key.RIGHT)) {
_root.circle._x++;
}
if (Key.isDown(Key.LEFT)) {
_root.circle._x–;
}
if (Key.isDown(Key.UP)) {
_root.circle._y–;
}
if (Key.isDown(Key.DOWN)) {
_root.circle._y++;
}
}При запуске данного ролика вы обнаружите, что движения круга стали более плавными. Значение частоты смены кадров было увеличено до 120 кадр/сек, максимального количества, которое может обработать компьютер.
Итак, когда же отдать предпочтение кнопке, отзывающейся на нажатие клавиши, а когда объекту Key? Если нажатие клавиши необходимо только для активации события, используйте кнопку. Она будет реагировать на нажатие клавиши в 100 % случаев. Функция Key.isDown отреагирует на нажатие клавиши, только если она вызвана. Поэтому, если пользователь нажмет и тут же отпустит кнопку, нажатие может быть пропущено. Это часто происходит на медленных компьютерах.
Функцию Key.isDown лучше использовать для контроля движения. В данном случае плавное движение будет продолжаться на протяжении всего времени удерживания клавиши. Функция может воспринимать одновременное нажатие нескольких клавиш, в то время как кнопка реагирует только на нажатие одной клавиши.Урок 24. Воспроизведение звука
Завершая вводную часть нашего учебника по ActionScript, рассмотрим использование звука. Flash может воспроизводить звуки, помещая их во временную шкалу ролика или клипа. Вы также можете запускать воспроизведение звука при помощи команд ActionScript.
Запуск звука из библиотеки представляет собой несколько более сложную процедуру, чем просто
Воспроизведение звука задается при помощи нескольких строк кода. Сначала надо создать объект типа Sound. Затем объекту необходимо сообщить, что "beep" – это звук, который должен воспроизводиться. Потом следует запустить звук. Вот как будет выглядеть код внутри сценария кнопки:
on (press) {
mySound = new Sound;
mySound.attachSound("beep");
mySound.start;
}Примечание
Функция start, которая используется со звуками, может включать два параметра. Первый – это задержка времени в секундах перед началом воспроизведения звука. В случае, если вы хотите пропустить первые три секунды, значение параметра будет 3. При обычном воспроизведении устанавливается 0. Вторым аргументом является количество циклов звука. Для воспроизведения 10 звуковых сигналов подряд используется значение 10.
Существует множество возможностей настройки звука. Наиболее важной из них является регулирование громкости. Если звук слишком громкий, вы можете изменить код ActionScript, а не переделывать звук.
Для настройки громкости, значение которой варьируется от 0 до 100, используется функция setVolume. Ниже приведен тот же самый код, но с уменьшенным вполовину значением громкости:
on (press) {
mySound = new Sound;
mySound.attachSound("beep");
mySound.setVolume(50);
mySound.start;
}Стоит также отметить функцию setPan, которая может принимать значение от -100 до 100. Она позволяет контролировать баланс для стереозвуков, при этом -100 соответствует левой колонке, 100 – правой. При воспроизведении в режиме моно звук из одной колонки будет сильнее, чем из другой. Ниже приведен сценарий, задающий воспроизведение звука только из левой колонки:
on (press) {
mySound = new Sound;
mySound.attachSound("beep");
mySound.setPan(-100);
mySound.setVolume(100);
mySound.start;
}Неудобно лишь то, что когда задается громкость или баланс, их значения остаются неизменными и при воспроизведении следующего звука. Поэтому данные параметры необходимо каждый раз настраивать заново. В противном случае новый звук будет воспроизводиться с настройками предыдущего.
Исходный файл: Sound.fla
Ролик Sound.fla на Web-сайте содержит четыре кнопки. Большая кнопка в центре отвечает за обычное воспроизведение звука. Большие кнопки слева и справа предназначены для воспроизведения звука только из левой или из правой колонки. Маленькая кнопка в центре воспроизводит звук с громкостью 50 %.
Вы узнаете больше о звуках в разделе "Музыкальный автомат" главы 6 "Игрушки и безделушки", а также в разделе "Музыкальный микшер" главы 7 "Игрушки-конструкторы".
На этом мы закончили изучение основ ActionScript. В следующей главе вы узнаете о таких приемах программирования, как планирование, отладка и тестирование. Затем, начиная с главы 5 "Создание визуальных эффектов", мы начнем рассматривать примеры программ.Глава 4 Процесс создания игры
• Flash и игры
• Элементы игры
• Программирование
• Вопросы авторских прав
• Изменение игр, рассматриваемых в данной главе
• Распространенные ошибки
Знания одних функций ActionScript не достаточно для создания законченных программ, например игр. Необходимо освоить базовые приемы программирования, а также изучить общее принципы создания игр. Давайте рассмотрим, что представляет собой Flash как среда разработки игр.