Синтаксис языка ActionScript
Переменные 1. Переменные в языке ActionScript определяются автоматически при их первом использовании. Специальной команды для описания переменной в языке нет. Тип переменной подбирается автоматически, в зависимости от контекста. Например, если в тексте сценария (программы) встречается команда: x = "ёжики"y, это означает, что в сценарий вводится новая переменная x строкового типа, которой присваивается начальное значение "ёжики". Указанием на строковый тип служат двойные кавычки либо апострофы.

Переменные языка ActionScript закрепляются за временной шкалой фильма или экземпляра видеоклипа, в котором они вводятся. Если переменная x создается на главной временной шкале, то она доступна для других функций сценария на этой временной шкале, но к ней нельзя получить прямой доступ из временных шкал других видеоклипов. Обратиться к такой переменной можно по имени _root.x (объект _root — это и есть главная временная шкала).

Глобальные переменные — те, к которым можно обращаться по их коротким именам из любого места сценария. Эти переменные относятся к специальной зоне _global. Глобальная переменная y задается следующим образом:

_global.y = "ёжики";

Типы данных 2. Основными типами данных ActionScript являются:
  • string — строковый тип
  • number — числовой тип (целые и вещественные типы не различаются)
  • boolean — логический тип (принимает значения true — истина и false — ложь)
  • movieclip — экземпляр видеоклипа

Кроме того, существуют типы object (объект, созданный с помощью ActionScript) и function (функция). Если создать переменную, указывающую на несуществующий элемент, она будет иметь тип undefined.

Узнать тип переменной можно с помощью оператора typeof. В частности, если выполнить команду y = typeof(_root.x), переменная y получит значение "string". С помощью оператора instanceof можно узнать, относится ли переменная к данному типу.

Можно преобразовать переменную из одного типа в другой, если это возможно. Пусть, например, переменная y имеет значение "3.14" - значение строкового типа. Она будет преобразована в числовой тип и сможет участвовать в арифметических операциях после выполнения команды y = number(y).

Массивы 3. Массивом называется набор переменных, имеющих одинаковое имя и различающихся по индексам. Пустой массив A создается командой A = new Array();

Заполнить массив можно следующим образом:

A = ["Вася", "Петя", "Маша", "Оля"];

А можно сразу создать уже заполненный массив (из 4 элементов):

A = new Array("Вася", "Петя", "Маша", "Оля");

К элементу массива можно обратиться по его индексу. Индекс первого элемента массива равен 0. Если выполнить команду y = A[2], переменная y примет значение "Маша".

С помощью метода push объекта Array можно добавлять в массив новые элементы. Команда A.push("Таня") добавит в массив A пятый элемент.

Операторы 4. Оператор присваивания, изменяющий значение переменной, в ActionScript имеет вид = .

Арифметические операторы +, -, *, / выполняют соответствующие арифметические действия. Оператор ++ увеличивает, а оператор -- уменьшает значение переменной на единицу. Оператор конкатенации, позволяющий "склеить" две строки, также имеет вид + . В выражении могут использоваться скобки ( ).

Операторы сравнения в ActionScript: == (равно), != (не равно), <, >, <=, >=. Возвращают логическое значение (истина или ложь). Могут применяться для сравнения как чисел, так и строк (сравнение строк производится в соответствии с алфавитным порядком). Операторы === и !== применяются для определения строгого равенства (неравенства). Строгое равенство имеет место в том случае, когда сравниваемые величины имеют одинаковый тип данных и одинаковое значение.

Логические операторы: && (логическое И), || (логическое ИЛИ) и ! (отрицание) позволяют составлять выражения с величинами логического типа.

Условный оператор if 5. Упрощенный синтаксис условного оператора в ActionScript выглядит так:

If ( условие ) {
   
последовательность команд
}

Если условие истинно, то выполняется последовательность команд, заключенная в фигурные скобки. Команды языка ActionScript отделяются друг от друга точкой с запятой. Если необходимо выполнить другую последовательность команд, когда условие ложно, используется полный синтаксис:

If ( условие ) {
   
последовательность команд
} else {
   
другая последовательность команд
}

Цикл типа while 6. Циклы в языках программирования бывают двух типов: счетные (когда заранее известно число повторяющихся действий — итераций цикла) и условные, когда повторяющиеся действия прекращают выполняться в зависимости от некоторого условия. Условный цикл задается в ActionScript следующей конструкцией:

While ( условие ) {
   
последовательность команд
}

Последовательность команд цикла, заключенная в фигурные скобки, будет выполняться до тех пор, пока условие не станет ложным. Если условие изначально ложно, эта последовательность команд не будет выполнена ни разу. В том случае, если её необходимо выполнить как минимум один раз, используется другая конструкция — цикл с постусловием:

Do {
   
последовательность команд
} While ( условие )

Цикл типа for 7. Для организации счетных циклов обычно используется конструкция for следующего типа:

for (i = 1; i <= 10; i++) {
   
последовательность команд
}

В приведенном примере последовательность команд выполнится ровно 10 раз, при этом переменная i будет последовательно принимать значения от 1 до 10. Вместо i может использоваться любая другая переменная, и диапазон ее изменения может быть любым. Общий же вид цикла for такой:

for (инициализация счетчика; условие выхода; изменение счетчика){
   
последовательность команд
}

Команда инициализации счетчика выполняется один раз в начале цикла. Затем проверяется условие выхода и, если оно ложно, цикл заканчивается. Если же оно истинно, выполняется последовательность команд в теле цикла, а затем команда изменения счетчика. После этого снова проверяется условие выхода и т.д.

Существует особая разновидность цикла for, имеющая следующий синтаксис:

for ( итератор in массив ){
   
последовательность команд
}

Переменная-итератор последовательно пробегает индексы всех элементов массива. В роли массивов могут выступать некоторые объекты ActionScript. Например, _root, может восприниматься как массив, элементы которого — все экземпляры видеоклипов, расположенных на главной временной шкале. Приведенный ниже код установит для всех этих экземпляров сжатие по горизонтали равным 50%:

for (name in _root){
   _root[name]._xscale = 50;
}

Досрочный выход из цикла 8. Команды break и continue прерывают выполнение последовательности команд цикла. При этом break полностью завершает цикл и передает управление на первую команду, следующую за циклом. Команда continue возвращает программу в начало текущего цикла (т.е. в место проверки условия).
Подпрограммы 9. Подпрограмма — это фрагмент программы, имеющий собственное имя, к которому можно обращаться по этому имени из любого места программы. В ActionScript все подпрограммы называются функциями. Создать функцию можно в любой временной шкале с помощью следующей конструкции:

function имя_функции ( список параметров ) {
   
команды функции
}

Для того чтобы выполнить функцию, указывается ее имя и список фактических параметров в скобках. Перед именем функции необходимо указать путь к ней (как и для переменных). Например, если функция test (без параметров) написана на главной временной шкале, обращение к ней будет выглядеть:

_root.test();

Если функция возвращает значение, то в ее теле необходимо присвоить возвращаемый результат переменной, имя которой совпадает с именем самой функции.

Упражнение 10. В качестве простого примера рассмотрим создание системы аутентификации. Создадим интерактивную форму, которая будет запрашивать пароль для входа в систему.

1. Откройте новый документ и переименуйте первый слой в text fields. Создайте два текстовых поля типа вводимый текст. На панели свойств в поле Instance Name введите имена для этих полей. Первое поле назовите userEnter, а второе passwordEnter. Установите у них границу и ограничьте длину вводимого текста восемью символами. У второго текстового поля задайте тип строки Password, чтобы вводимый в него текст отображался звездочками.

2. Создайте два блока статического текста. В одном введите надпись "Login:", а в другом - "Password:". Разместите их слева от первых двух.

3. Создайте новый символ видеоклипа (не забудьте открыть библиотеку) и назовите его errorMessage. Он будет выдавать сообщения об ошибке. Первый слой его временной шкалы переименуйте в actions. Первый кадр этого слоя должен быть пустым и содержать только команду stop(). Создайте еще один слой с именем labels. Во втором кадре этого слоя создайте пустой ключевой кадр и на панели свойств дайте ему метку (Frame Name) start.

4. Теперь создайте третий слой, назовите его artwork и разместите его под слоем labels. Создайте в этом слое любую анимацию сообщения об ошибке (например, появление и исчезновения надписи, ее движение или изменение ее масштаба), используя операции автоматического заполнения кадров. Анимация должна начинаться со второго кадра. Цикл анимации должен повториться хотя бы дважды. На самом последнем кадре анимации в слое actions добавьте команду gotoAndStop(1), а в слое labels просто добавтьте соответствующее количество промежуточных кадров (<F5>). Временная шкала будет выглядеть примерно так как показано на рисунке.

5. На главной временной шкале фильма (Scene1) создайте слой error. Поместите экземпляр только что созданного видеоклипа из библиотеки на рабочее поле и поместите его под текстовыми полями для ввода имени и пароля (при этом содержимого видеоклипа видно не будет — ведь его первый кадр пустой). Присвойте этому экземпляру имя (например, errorMessage — имя экземпляра вполне может совпадать с именем самого символа).

6. Создайте еще один слой и назовите его labels. Для первого кадра этого слоя задайте метку start. Добавьте ключевой кадр 10 и обозначьте его меткой success. Во всех остальных слоях в кадре 10 должны быть пустые ключевые кадры.

7. Создайте, наконец, новый слой Success. На нем будет размещено изображение успешного входа в систему. Содержимое этого слоя может быть любым, но начинаться оно должно только с 10 кадра.

8. Наконец, добавим кнопку, на которую пользователь будет нажимать после ввода пароля. Для кнопки создайте отдельный слой (назовите его button). Кнопку можно самому не рисовать — во Flash есть библиотека готовых кнопок, доступных по команде Window-->Other Panels-->Common Libraries-->Buttons. Выберите любую, добавьте ее экземпляр в первый кадр нового слоя и, не снимая выделения с экземпляра, откройте панель Actions. Код, который будет выполняться при нажатии на кнопку, должен быть таким:

on (release) {
   if (userEnter.text == "Вася" && passwordEnter.text == "12"){
      gotoAndPlay("success");
   } else {
      _root.errorMessage.gotoAndPlay("start");
   }
}

9. На слое button добавьте пустой ключевой кадр 10. Создайте еще один слой и разместите его над всеми остальными. К первому кадру этого слоя добавьте функцию stop(). Протестируйте фильм. Проанализируйте пример и разберитесь в коде.


главная | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13