Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг
Шрифт:
Интервал:
Закладка:
• Урок 15. Контроль воспроизведения клипа
• Урок 16. Управление свойствами клипа
• Урок 17. Применение метода "Перетащи и положи" к клипам
• Урок 18. Клипы и уровни
• Урок 19. Копирование клипов
• Урок 20. Управление несколькими клипами
• Урок 21. Пересечение объектов
• Урок 22. Изменения содержимого экрана с помощью клипов
• Урок 23. Ввод команд с клавиатуры
• Урок 24. Воспроизведение звука
Мы закончили изучение основ ActionScript, теперь давайте рассмотрим более сложные темы. В следующих 10 уроках обсуждаются некоторые приемы, которые используются для создания игр, описанных в данной книге.
Урок 15. Контроль воспроизведения клипа
Исходный файл: Mcplayback.fla
Клипы представляют собой как бы небольшие ролики внутри основного Flash-ролика. Они включают полноценную временную шкалу со слоями, а также большинство элементов основного ролика. И основной Flash-ролик, и клипы можно контролировать при помощи команд play() и stop().
На Web-странице, в библиотеке файла под названием Mcplayback.fla, находится клип "myMovieClip". Этот клип состоит из 10 кадров, промаркированных для того, чтобы вы знали, какой кадр клипа воспроизводится в данный момент.
Перетащив клип из библиотеки на рабочее поле, вы создадите его копию, которой можно и даже нужно присвоить имя. Для этого используйте панель Properties (Свойства), изображенную на рис. 3.1.
Рисунок 3.1 . В панели Properties можно присвоить имя копии клипа
...Совет
Вы наверняка заметили, что копия клипа имеет такое же имя, как и клип в библиотеке. Обычно это делается при создании одной копии клипа. Имя копии легче запомнить, если оно совпадает с именем объекта библиотеки.
Библиотека ролика, рассматриваемого в примере, также содержит пять кнопок. Они помещены на рабочее поле под копией клипа. Присваивать имена копиям кнопок необязательно, впрочем, вы и не сможете этого сделать. В любом случае код не может ссылаться на кнопку, поэтому в имени нет необходимости.
После добавления клипа и пяти кнопок рабочее поле будет иметь примерно такой вид, как показано на рис. 3.2. Кнопки не только выглядят, но и используются как кнопки управления видеомагнитофоном.
Рисунок 3.2 . Кнопки позволяют контролировать воспроизведение клипа
Пять кнопок позволяют полностью контролировать клип. Кнопка Play (Воспроизведение) запускает воспроизведение ролика. При достижении конца клипа воспроизведение начинается снова с первого кадра. Кнопка Stop (Стоп) останавливает воспроизведение ролика в текущем кадре. Кнопка Rewind (Перемотать) возвращает клип к первому кадру. Кнопки Previous (Предыдущий) и Next (Следующий) продвигают клип на один шаг соответственно назад или вперед. Прежде чем передать контроль над клипом пользователю, необходимо остановить клип. Обычно клипы запускаются сразу же после своего появления на рабочем поле. Чтобы предотвратить это, в первый кадр главной временной шкалы был помещен следующий сценарий, останавливающий анимацию клипа, а также сам ролик:
myMovieClip.stop(); stop();
Точка в первой строке сценария показывает, что функция stop() будет выполнена для копии клипа «myMovieClip». Вторая строка не содержит имени копии, поэтому команда выполняется в месте расположения сценария – в данном случае в главной временной шкале. В сценариях для кнопок команды клипу посылаются также при помощи точки. Вот сценарий кнопки Play, задающий воспроизведение клипа:
on (press) {
myMovieClip.play();
}Кнопка Stop посылает клипу команду stop():
on (press) {
myMovieClip.stop();
}Кнопка Rewind задает переход клипа к первому кадру и его остановку. Это действие выполняет команда gotoAndStop() с параметром 1.
on (press) {
myMovieClip.gotoAndStop(1);
}Кнопки Previous и Next перемещают клип на один кадр вперед или назад. Эти действия выполняются при помощи команд prevFrame() и nextFrame():
on (press) {
myMovieClip.prevFrame();
}
on (press) {
myMovieClip.nextFrame();
}Хотя целью данного урока было научить вас управлять воспроизведением клипов, вы можете использовать данный пример как руководство для воспроизведения анимации и даже слайд-шоу во Flash.
Урок 16. Управление свойствами клипа
Исходный файл: Mcproperties.fla
Вы можете не только контролировать содержание клипа, но и задавать его внешние свойства. Например, управлять его положением, вращением и масштабом.
В примере Mcproperties.fla в центре экрана находится клип с изображением лисы. И рисунок в библиотеке, и копия клипа имеют имя "fox".
Кроме этого, вокруг изображения лисы расположено восемь кнопок. Каждая из них задает свойство клипа. Внешний вид экрана показан на рис. 3.3. Первые три кнопки имеют названия Left (Левая), Middle (Средняя) и Right(Правая).
Рисунок 3.3. При помощи кнопок, расположенных вокруг клипа «fox», можно изменить его положение, масштаб и повернуть его
В уроке 6 «Анимация при помощи ActionScript» мы узнали, что переменная _x используется для описания горизонтального положения клипа на рабочем поле. Эта переменная и будет использоваться кнопками Left, Middle и Right. Они могут использовать и переменную _у для описания вертикального положения клипа, однако в данном примере это не требуется. Приведем код кнопки Left. Он задает горизонтальное положение рисунка равным 200, то есть размещает его немного слева от центра при условии, что ширина ролика составляет 550 пикселов. Кнопки Middle и Right отличаются только значением переменной _x.
on (press) {
fox._x = 200;
}Для изменения масштаба клипа используются переменные _xscale и _yscale. В случае, если переменные имеют одинаковые значения, масштаб клипа будет изменяться пропорционально. Значение 100 соответствует масштабу 100 %.
...Совет
Значения переменных _xscale и _yscale можно задавать отдельно друг от друга. Они могут быть разными, при этом клип станет более тонким или более плоским.
Ниже приведен сценарий кнопки «50 %». Две другие кнопки масштабирования используют аналогичный код, но с другими значениями.
on (press) {
fox._xscale = 50;
fox._yscale = 50;
}Для вращения клипа используется переменная _rotation. Значение переменной задается в градусах, при этом 0 равен 360. Вы можете задать значение больше 360 или меньше 0, однако Flash преобразует их в показания между 0 и 360. Далее приводится сценарий кнопки Tilt (Наклон). Она поворачивает клип на 30° по часовой стрелке. Кнопка Straight (Прямо) возвращает клип в положение 0°.
on (press) {
fox._rotation = 30;
}Используя эти переменные в более сложных сценариях, рассматриваемых далее, вы сможете перемещать клип по рабочему полю, что необходимо для создания игр различных типов.
Урок 17. Применение метода «Перетащи и положи» к клипам
Исходный файл: Dragsimple.fla
Важным свойством интерфейса, будь то игра или приложение, является возможность перетаскивать элементы по экрану. Во Flash это можно сделать несколькими способами. Мы рассмотрим три из них.
Команда startDrag задает автоматическое следование клипа за курсором. Пример Dragsimple.fla демонстрирует самый простой способ применения данной команды.
Клип под названием "circle" с изображением круга был помещен на рабочее поле. Как только ролик запускается, нижеприведенная команда задает его движение следом за курсором. Она также задает остановку анимации главной временной шкалы, чтобы ролик не продолжал воспроизведение следующих кадров.
startDrag(«circle», true); stop();
В нашем примере команда startDrag использует два параметра. Первый – это имя перетаскиваемого клипа. Второй – ключевое слово true, которое в данном случае задает привязку центра объекта к курсору. Если второй параметр имеет значение false, за основу будет взято расстояние между курсором и центром клипа на момент выполнения команды startDrag.
...Примечание
Ключевые слова true и false называются булевыми константами. Они могут использоваться в случае, если атрибут либо действует, либо нет, а также отображать результат сравнения, например "a = = b".
В примере Dragsimple.fla клип «circle» следует за курсором. Однако чаще всего применяется другой способ перетаскивания: пользователь подводит курсор к объекту, нажимает кнопку мыши, перетаскивает объект в нужное место и отпускает кнопку.
Исходный файл: Dragcomplex.fla
Подобную манипуляцию можно осуществить с клипом, внутри которого содержится кнопка. В файле Dragcomplex.fla в тот же самый клип "circle" была помещена невидимая кнопка (в ней заполнен лишь один кадр "Hit").
Таким образом, клип circle включает такую же графику, как и в примере Dragsimple.fla, и, помимо этого, кнопку. Кнопке назначен следующий сценарий: когда пользователь нажимает кнопку, выполняется команда startDrag, когда отпускает – команда stopDrag.on (press) {
startDrag("",false);
}
on (release) {
stopDrag();
}Пустые кавычки внутри команды startDrag сообщают Flash, что перетаскиваться будет текущий клип. Кнопка находится внутри клипа «circle», поэтому перемещаться будет именно он. false в качестве второго параметра означает, что клип не будет привязан к центру курсора, а сохранит первоначальное расстояние между курсором и центром клипа. При этом будет создаваться впечатление, что курсор схватил круг в некоторой точке и перетаскивает его за нее.
Команда stopDrag не требует никаких параметров. Одновременно может перетаскиваться только один клип, поэтому команде необходимо лишь остановить текущее действие перемещения, благодаря чему клип вернется в неподвижное состояние.