Выбрать главу

Таким способом является создание клипа, который содержал бы все возможные состояния объекта. Например, если объектом является космический корабль, в ролик необходимо включить кадры, изображающие: космический корабль с выключенным двигателем, с включенным главным двигателем, включенным левым двигателем, с включенным правым двигателем, а также ряд кадров, представляющих взрывающийся космический корабль.

Исходный файл: Changingimages.fla

Данный пример демонстрируется в файле Changingimages.fla. Кнопки, расположенные слева от клипа, помогают выбрать отображаемую часть клипа. На рис. 3.7 изображен фрагмент ролика. Ролик целиком вы можете увидеть на Web-сайте.

Рисунок 3.7. Ролик Changingimages.fla позволяет отображать различные виды одного и того же объекта

Каждая кнопка ролика Changingimages.fla задает перемещение клипа в определенный кадр. Приведем пример кода кнопки Up:

on (press) {

ship.gotoAndStop("up");

}

Код кнопки Explode отличается от остальных, он использует команду gotoAndPlay, задающую перемещение клипа к кадру «explode» и продолжение воспроизведения:

on (press) {

ship.gotoAndPlay("explode");

}

Клип включает последовательность из восьми кадров, которая начинается с кадра «explode» и изображает взрыв. Последний кадр последовательности содержит команду stop, задающую остановку воспроизведения клипа после взрыва. Просматривая ролик Changingimages.fla на Web-сайте, обратите особое внимание на временную шкалу клипа "ship". Здесь кадры маркированы таким образом, что код использует не номера, а имена кадров.

Урок 23. Ввод команд с клавиатуры

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

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

Для применения кнопочного метода создайте обычную кнопку Flash. Она не должна представлять из себя ничего особенного, так как будет расположена за пределами рабочего поля. Если кнопке назначен следующий код, она будет реагировать на клавишу r и использовать ее для перемещения клипа:

on (keyPress "r") {

circle._x++;

}

...

Совет

Имейте в виду, что событие keyPress чувствительны к регистру. Это значит, что если кнопке назначена клавиша "г", она не будет реагировать на нажатие комбинации Shift+R.

Исходный файл: Keyboardbutton.fla Для обозначения движений лучше использовать клавиши с изображением стрелок, а не буквы. Для указания данных клавиш используется специальный синтаксис. Ниже приведен сценарий, позволяющий пользователю перемещать клип в четырех направлениях. Вы можете также найти данный сценарий на Web-сайте в файле Keyboardbutton.fla.

on (keyPress «<Rignt>») {

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)) {