Гэри Розенцвейг - Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Подобно программе on(press) в сценарии кнопки, команды реакции на событие onClipEvent(enterFrame) заключаются в фигурные скобки.
В данной программе будет только одна команда, перемещающая клип на один пиксел влево. Давайте взглянем на сценарий и проанализируем, какие действия в нем выполняются.OnClipEvent(enterFrame) {
this._x – ;
}Команда this._x –, вероятно, будет совершенно непонятной для людей, не знакомых с языками программирования, поэтому разберем ее по частям.
Команда this обозначает обращение команды к объекту, который ее содержит. В данном случае this используется для обращения к клипу, которому назначен этот сценарий.
За командой this следует точка, обозначающая обращение к свойству объекта. В нашем примере _x относится к горизонтальному положению клипа.
Итак. this._x определяет горизонтальное положение клипа. Символ – является декрементом (командой уменьшения значения). Он уменьшает значение стоящей перед ней величины на 1 (пункт). Таким образом, команда this. _x – берет значение горизонтального положение клипа и вычитает 1, благодаря чему клип перемещается влево.
Если клип необходимо переместить вправо, используется команда ++, которая называется инкрементом (это команда увеличения значения). Если вы хотите переместить клип вправо или влево сразу на несколько пикселов, используйте соответственно += или -=:OnClipEvent(enterFrame) {
this._x -= 5;
}Данная команда переместит клип сразу на пять пикселов.
Урок 7. Возможность управления клипами пользователем
Исходный файл: Usercontrol.fla
А теперь давайте сделаем так, чтобы клип двигался вслед за курсором.
В предыдущем занятии мы узнали, как получить доступ к горизонтальной позиции клипа. При помощи параметра _y так же легко оперировать изменением координаты по вертикали. Теперь все, что нам нужно, – это привязать данные координаты к курсору.
Местоположение курсора определяется двумя параметрами: _xmouse и _ymouse, которые представляют собой координаты курсора по вертикали и горизонтали. Возникает следующий вопрос: чьи это параметры?
Это могут быть параметры любого клипа или самого ролика. Например, команда this._xmouse определяет горизонтальное положение мыши по отношению к центру текущего клипа.
Нам нужно установить положение клипа по отношению к рабочему полю. Для того чтобы получить параметры рабочего поля, вместо идентификатора this следует использовать _root. Так, переменная _root._xmouse определяет горизонтальное расположение мыши относительно левого верхнего угла рабочего поля.
Для того чтобы привязать координаты клипа к координатам курсора, необходимо изменить параметры _x и _y клипа в соответствии с параметрами _xmouse и _ymouse рабочего поля. Вот как будет выглядеть программа:
OnClipEvent(enterFrame) {
this._x = _root._xmouse;
this._y = _root._ymouse;
}На рис. 2.10 показан «собранный» ролик Usercontrol.fla. Он состоит из одного кадра со скриптом, содержащим команду stop(). Клипу назначен вышеописанный сценарий. Это все, что требуется. При воспроизведении ролика клип с лисой будет следовать за курсором.
Рисунок 2.10. По сценарию данный клип перемещается вслед за курсоромТеперь, когда вы умеете управлять воспроизведением ролика и перемещением клипа, давайте рассмотрим основные элементы программирования в ActionScript.
Урок 8. Использование переменных
Переменные представляют собой поименованные области памяти, содержащие какую-либо информацию, такую как числа или последовательность символов. Например, вы можете создать переменную и поместить в нее число 5. Если вы прибавите к данной переменной число 2, она будет содержать число 7. Вот как эти действия будут выглядеть в ActionScript:
myVariable = 5; myVariable += 2;
myVariable – это имя созданной вами переменной. Для того чтобы создать переменную во Flash, необходимо просто один раз упомянуть ее в тексте программы. Flash автоматически создает переменную с соответствующим именем (в ActionScript не требуется какой-либо специальной инициализации переменных). В нашем примере была создана переменная myVariable со значением 5. В следующей строке к данной переменной прибавляется значение 2. Теперь переменная myVariable содержит число 7.
...Совет
Очень важно присвоить переменной содержательное имя. Оно должно отражать выполняемую ей задачу. Например, если переменная предназначена для хранения имени пользователя, ее лучше назвать, допустим, "userName". Позднее, просматривая код, вы сразу поймете, для чего используется данная переменная.
В переменную можно также помещать строки. Строка – это последовательность символов наподобие «Hello World». Так же как и число, строку можно сохранить в переменной при помощи символа =.
myVariable = «Hello World»;
Переменные во Flash не делятся на типы. Классификация переменных – это ограничение типа данных, хранимых в данной переменной, которое применяется в других языках программирования. Это означает, что если переменная предназначена для хранения чисел, она может использоваться только для хранения чисел, но не для хранения строк. В ActionScript нет такого ограничения, поэтому любая переменная может хранить любые объекты, например числа или строки.
Помимо чисел и строк переменные могут содержать другие элементы, например указатель клипа. Вспомните, как в двух предыдущих уроках использовался элемент this для ссылки на текущий клип. Вы можете присвоить значение this переменной и с ее помощью ссылаться на клип.
Использование подобных элементов помогает управлять роликами, где содержится более чем один клип.
Вы будете часто сталкиваться с подобными ситуациями в играх, рассматриваемых в этой книге. На данный же момент вам достаточно знать, что переменные могут содержать числа, строки и ссылки на клипы....Совет
Все переменные, использованные в этом уроке и в остальной книге, это глобальные переменные. Это значит, что после того как вы их задали, к ним можно обращаться из ролика или других клипов. Также с помощью ключевого слова "var" вы можете определить локальные переменные. Локальные переменные, определенные в какой-либо функции, недоступны к использованию в остальном коде. Как локальную переменную, например, удобно определять счетчик цикла, используемого внутри функции.
Урок 9. Выполнение операций
Вам наверняка понадобится изменять данные, хранящиеся в переменной. Мы уже рассматривали, как с помощью команд ++ или += изменять значение переменной. В вашем распоряжении также имеется большой набор других операций.
Давайте начнем с переменных, содержащих числа. Вы можете выполнять большое количество математических операций с числами при помощи символов +, -, / и *. Приведем несколько примеров.
Допустим, у вас есть две переменные: а и b. Вы можете сложить их и поместить результат в переменную с.
a = 7;
b = 5;
c = a + b;В предыдущем примере с будет в результате содержать число 12. Вот еще один подобный пример:
c = a – b;
c = a * b;
c = a / b;Переменная с получит значение 2 в первой строке, 35 – во второй строке и 1,4 – в третьей строке. Вы также можете выполнять более сложные математические операции при помощи специальных функций, встроенных во Flash. Все они содержатся в объекте Math, за которым следует точка и имя функции. Например, при помощи функции Math.sqrt можно вычислить квадратный корень числа:
a = 9; b = Math.sqrt(a);
Значением b является 3 – квадратный корень из 9.
Один из важнейших элементов компьютерного языка, позволяющий программистам создавать игры, – генератор случайных чисел. Без случайных чисел игры были бы полностью предсказуемыми и скучными.
Flash генерирует случайные числа при помощи функции Math.random(). При этом генерируются случайные десятичные значения между 0.0 и 1.0. Нужные числа получают, умножая данные значения на целое число, а затем переводя их в целое число при помощи функции int. Например, следующая строка служит для генерации случайного числа от 0 до 9:myRandomNumber = int(Math.random()*10);
Другие математические функции будут рассмотрены по мере их появления в примерах. Функции могут применяться и к строкам. Например, для объединения двух строк может использоваться символ +:
a = «Hello»;
b = "World";
c = a + b;В итоге переменная с превратится в строку «HelloWorld». Обратите внимание на то, что между двумя этими словами нет пробела. Вам следует дать Flash команду ввести пробел. В результате следующий код создаст «Hello World»:
a = «Hello»;
b = "World";
c = a + " " +b;Более простым способом объединения двух строк является использование синтаксических элементов +=:
a = «Hello»; b += "World";
Теперь, когда вы узнали больше о переменных и их использовании, рассмотрим, как с помощью ActionScript организовать выполнение кода по условию.
Урок 10. Условные выражения
Из урока 5 «Создание кнопок для пользователя» вы узнали, как пользователь может использовать кнопки для перехода от одного кадра к другому. Пользователь решает, какую часть ролика он хочет увидеть следующей, щелкает по кнопке, и сценарий, приписанный данной кнопке, отправляет ролик в соответствующий кадр.