Глава 3. Введение в язык ActionScript

Синтаксис языка и комментарии

Подобно JavaScript, язык ActionScript имеет точечный синтаксис. Слева от точки находится объект или ссылка на временную шкалу клипа, а справа – некоторое свойство, путь, переменная или действие, которое относится к элементу в левой части. Например:

· mycar._width = true;

· _root.gotoAndStop(20);

Точка с запятой (;) указывает на конец команды.

Глава 3. Введение в язык ActionScript - student2.ru

Рис. 20. Панель Actions

Хороший стиль программирования подразумевает включение в код программы комментариев. Для этого введите оператор // и добавьте текст с комментарием после него. Например:

// Проверка того, что переменная x больше или равна 4

if (x >= 4) {

// Если да, то начать воспроизведение

// анимации с кадра 10

gotoAndPlay(10);

} else {

// Если нет, то начать воспроизведение

// анимации с кадра 20

gotoAndPlay(20);

}

Чтобы вставить в программу большой текст, можно начать комментарий открывающимся оператором (/*) и закончить закрывающимся оператором (*/).

Типы данных

В языке ActionScript существуют следующие типы данных:

· Булев (или логический) тип данных. Переменная принимает одно из двух значений: true (истина) или false (ложь).

· Числовой тип данных (5; –123; 0.0002).

· Строковый тип данных. Строка – это последовательность буквенных и цифровых символов, а также знаков пунктуации. Строки заключаются либо в двойные (“), либо в одинарные (‘) кавычки (например, str = “Привет!”).

· Объекты – это структура данных с определенными свойствами. Более подробно о встроенных объектах Flash (например, Array, Math, String и др.) см. в § 3.8.

· Клип – отдельный анимационный ролик с собственной временной шкалой (см. § 3.9).

Заметим, что с помощью команды typeof() можно определить тип переменной. Она возвращает следующие значения: boolean, function, movieclip, number, object или string.

Переменные

Имя переменной может состоять из буквенных и цифровых символов, знаков подчеркивания (_) и символов доллара ($). В ней допускается хранение данных любого типа, например:

X1 = –5.6;

_yy = ”Как дела?”;

При этом имя переменной не должно совпадать с ключевыми (зарезервированными) словами языка ActionScript. К ним относятся:



break case continue default delete do else for function if in instanceof new return switch this typeof var void while with  

Чтобы объявить глобальную переменную, которая доступна в любом месте фильма, следует использовать слово «_global», например:

_global.str1 = ”глобальная переменная”;

Для объявления локальной переменной, которая может использоваться внутри функций, применяется ключевое слово «var», например:

function main1() {

var str2 = ”локальная переменная”;

}

При тестировании Flash-фильма можно просматривать текущие значения переменных в окне Output. Для этого в текст программы помещается функция trace(), где в скобках перечислены нужные переменные, например:

trace (str1);

Операторы

Операторы ActionScript можно разделить на следующие группы:

· арифметические операторы (сложение (+), вычитание (–), умножение (*), деление (/), деление по модулю (%), инкрементирование, или прибавление единицы (++), декрементирование, или вычитание единицы (– –));

· операторы сравнения (<, >, <=, >=), возвращается значение true или false;

· логические операторы (НЕ (!), И (&&), ИЛИ (||)), возвращается значение true или false;

· операторы равенства (= =, !=), возвращается значение true или false;

· операторы присваивания (=, +=, –=, *=, /=, %=).

Условные конструкции

Условные конструкции if () или if () … else позволяют проверить условие, заключенное в скобках, и возвращают значение true или false. В зависимости от полученного результата выполняются соответствующие команды.

Рассмотрим пример:

if (x >= 100) {

y = 2 * Math.PI * x;

gotoAndPlay(10);

} else {

y = Math.PI * x * x;

z++;

gotoAndPlay(20);

}

Другая условная конструкция switch()… имеет несколько ветвей, код которых выполняется в зависимости от значения условия, заключенного в круглых скобках.

Рассмотрим пример:

num = 1;

switch(num) {

case 1:

gotoAndPlay(50);

break;

case 2:

gotoAndPlay(100);

break;

default:

gotoAndStop()

}

Ключевое слово break указывает, что будут выполнены только те команды, которые расположены на соответствующей ветви.

Циклы

Оператор цикла while() обеспечивает многократное выполнение набора команд до тех пор, пока условие, заключенное в круглых скобках, возвращает значение true.

while(условие) {

команды;

}

В следующем примере цикл вычисляет значение xy:

z = x;

i = 2;

while (i <= y) {

z = z * x;

i++;

}

В отличие от while() в операторе do…while() команды выполняются хотя бы один раз. Если затем условие оказывается истинным, то команды выполняются снова, в противном случае работа оператора завершается.

do {

команды;

}

while(условие);

В следующем примере цикл также вычисляет значение xy:

z = x;

i = 2;

do {

z = z * x;

i++;

} while (i <= y);

В цикле for() помещается инициализация счетчика, условие и модификация значения счетчика, записанные через точку с запятой:

for(<инициализация счетчика>; <условие>; <модификация значения счетчика>)

{

команды;

}

Рассмотрим пример, где цикл выполняется 50 раз:

for(i = 0; i < 50; i++) {

duplicateMovieClip(“/star”, “star” + i, i);

setProperty(“star” + i, _x, 10 + random(500));

setProperty(“star” + i, _y, 10 + random(350));

setProperty(“star” + i, _alpha, random(100));

}

Функции

Чтобы объявить функцию, используется следующая конструкция:

function имя_функции(аргументы) {

команда(ы);

}

В качестве примера рассмотрим функцию Move_car(), которая перемещает автомобиль на 100 пикселей влево и вниз:

function Move_car(myCar) {

var x = myCar._x;

var y = myCar._y;

myCar._x = x – 100;

myCar._y = y + 100;

}

Чтобы возвратить значение из функции, используется ключевое слово return с последующим указанием чисел или переменных. Для доступа к параметрам функции можно использовать объект Arguments, описанный в § 3.8.

Объекты

Рассмотрим свойства и методы наиболее важных объектов:

1. Arguments – это массив, в котором содержатся значения, передаваемые в качестве параметров функции. Свойства Arguments:

· arguments.length – количество параметров;

· arguments.caller – ссылка на функцию, из которой была вызвана данная функция. Если функция не вызывалась из другой функции, то возвращается null.

2. Array – обеспечивает доступ к массивам и их обработку. Для того чтобы объявить новый массив, используются следующие конструкции:

· days = new Array() – новый пустой массив;

· town = new Array(10) – новый пустой массив, в который можно записать максимум 10 элементов;

· alphabet = new Array(“a”, “b”, “c”, “33”) – новый массив из четырех элементов, заполненный при создании (заметим, что в массиве могут содержаться данные различных типов).

Для доступа к элементу массива в квадратных скобках указывается его индекс (индекс первого элемента – 0, второго – 1 и т. д.):

town[0] = “Moscow”;

Рассмотрим свойства и методы массивов:

· имя_массива.length – количество элементов в массиве;

· имя_массива.concat(элемент1, элемент2, …, элементn) – метод позволяет добавлять дополнительные элементы в конец массива. Например, после выполнения следующих команд массив letter2 будет содержать элементы “a”, “b”, “c”, “d”, “e”:

letter1 = new Array(“a”, “b”, “c”);

letter2 = new Array();

letter2 = letter1.concat(“d”, “e”);

· имя_массива.slice(индекс1, [индекс2]) – создание массива из элементов исходного в диапазоне, который начинается с индекса1 вплоть до индекса2, исключая последний (индекс2 является необязательным параметром; если он не указан, то по умолчанию будет использоваться последний индекс в массиве). Если индекс1 < 0, то отсчет производится с конца массива (–1 – последний элемент, –2 – предпоследний и т. д.).

Например, в результате выполнения следующих команд в массив nums1 заносятся значения 11 и 22:

nums = new Array(11, 22, 33, 44, 55);

nums1 = new Array();

nums1 = nums.slice(0, 2);

· имя_массива.pop() – возвращает последний элемент и удаляет его из массива;

· имя_массива.push(элемент1, элемент2, …, элементn) – добавляет указанные элементы в конец массива;

· имя_массива.shift() – удаляет первый элемент массива и возвращает его значение;

· имя_массива.unshift(элемент1, элемент2, …, элементn) – добавляет указанные элементы в начало массива;

· имя_массива.sort([функция сортировки]) – элементы массива сортируются в определенном порядке. Функция должна сравнивать два числа, возвращать –1, если первое число предшествует второму (1 – наоборот), и возвращает 0 при равных числах. Например, сортировку по возрастанию можно задать следующим образом:

function comp(x, y) {

return x – y; }

myarray.sort(comp);

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

· имя_массива.reverse() – изменяет порядок следования элементов массива на противоположный.

3. Boolean – преобразует выражение в булевую переменную (возвращает значение true, если выражение не ноль, иначе – false). Метод toString() преобразует булевую переменную в строковое представление (“true” или “false”).

4. Button – использует методы и свойства для управления кнопками.

5. Color – установка и преобразование RGB-цветов клипа.

6. Date – служит для хранения и обработки информации о дате и времени. Синтаксис объявления нового объекта Date:

x = new Date();

y = new Date([Параметры]);

Параметры:

· год (четырехзначное число, при этом значения 0–99 соответствуют годам 1900–1999);

· месяц (от 0 (январь) до 11 (декабрь));

· число (от 1 до 31);

· часы (от 0 до 23);

· минуты (от 0 до 59);

· секунды (от 0 до 59);

· миллисекунды (от 0 до 999).

Если параметры не указаны, то в объект Date заносится текущая дата и время. Далее рассмотрим методы, позволяющие устанавливать или возвращать параметры объекта Date:

· getYear() – возвращает год относительно 1900 года;

· getFullYear() – возвращает год в виде четырехзначного числа;

· getMonth() – возвращает месяц (от 0 (январь) до 11 (декабрь));

· getDate() – возвращает день (от 1 до 31);

· getHours() – возвращает часы (от 0 до 23);

· getMinutes() – возвращает минуты (от 0 до 59);

· getSeconds() – возвращает секунды (от 0 до 59);

· getMilliseconds() – возвращает миллисекунды (от 0 до 999);

· getDay() – возвращает день недели (от 0 – воскресенье до 6 – суббота);

· setYear(значение) – задает год в виде двухзначного или четырехзначного числа;

· setMonth(значение) – задает месяц года;

· setDate(значение) – задает число;

· setHours(значение) – задает часы;

· setMinutes(значение) – задает минуты;

· setSeconds(значение) – задает секунды;

· setMilliseconds(значение) – задает миллисекунды;

· toString() – преобразование даты в строку следующего вида: Thu Oct 21 12:47:09 GMT+0400 2010.

7. Key – используется для идентификации нажатий клавиш во время воспроизведения фильма. Методы Key:

· getAscii() – возвращает значение ASCII-кода последней нажатой клавиши (коды Ascii различаются для строчных и прописных букв);

· getCode() – возвращает код последней нажатой клавиши во время воспроизведения клипа. Пример:

new_key = new Object();

new_key.onKeyDown = function() {

trace(“Данные о последней нажатой клавише: ”);

trace(“Код: ” + Key.getCode());

trace(“ascii-значение” + Key.getAscii());

}

Key.addListener(new_key);

· isDown(keyCode) – возвращает true, если клавиша с кодом keyCode нажата, иначе – false.

Свойства объекта Key связаны с кодами клавиш: Key.ENTER (код 13), Key.HOME (код 36), Key.SPACE (код 32), Key.TAB (код 9), Key.ESCAPE (код 27), Key.INSERT (код 45) и др.

8. Math – применяется для обращения к математическим функциям и константам. Рассмотрим методы объекта Math:

· Math.abs(число) – модуль числа;

· Math.min(число1, число2) и Math.max(число1, число2) – мень-шее и большее из чисел;

· Math.pow(число, степень) – возведение числа в некоторую степень;

· Math.exp(выражение) – экспоненциальная функция ex;

· Math.log(выражение) – натуральный логарифм;

· Math.sqrt(выражение) – квадратный корень;

· Math.random() – возвращает случайное число от 0 до 1;

· Math.sin(выражение), Math.cos(выражение) и Math.tan(выра-жение) – тригонометрические функции;

· Math.acos(выражение) и Math.asin(выражение) – арккосинус и арксинус выражений в радианах;

· Math.ceil(выражение) и Math.floor(выражение) – преобразуют вещественное число в ближайшее большее и меньшее целое число;

· Math.round(выражение) – округление числа до ближайшего целого числа.

Также можно использовать математические константы: Math.PI (константа π ≈ 3.14), Math.E (константа e ≈ 2.718), Math.LN10 (натуральный логарифм от 10), Math.SQRT2 (квадратный корень из 2) и др.

9. Mouse – объект, предназначенный для работы с указателем мыши. Методы Mouse:

· Mouse.hide() – скрывает указатель мыши;

· Mouse.show() – показывает указатель мыши.

За позицией указателя мыши можно следить с помощью следующих свойств:

· _xmouse – горизонтальная координата позиции мыши;

· _ymouse – вертикальная координата позиции мыши.

10. MovieClip – предоставляет методы для управления свойствами клипа и его воспроизведением (некоторые свойства рассмотрены в § 3.9 и др.).

11. Number – применяется при проведении вычислений.

12. Object – находится в корне иерархии классов ActionScript. Это универсальный объект, который может использовать методы других объектов.

13. Sound – применяется для управления воспроизведением звука (см. § 3.11).

14. String – применяется для работы со строками. Объявление нового объекта String:

str = new String(“строка”) или str = “строка”;

Свойства и методы String:

· строка.length – число символов в строке. Например, длина строки mystring равна 30:

mystring = “Однажды в студеную зимнюю пору”;

· строка.charAt(индекс) – возвращает символ с указанным индексом (нумерация символов начинается с нуля);

· строка.toUpperCase() – преобразует все символы строки к верхнему индексу. Например, после команды

mystring = mystring.toUpperCase();

значение mystring равно “ОДНАЖДЫ В СТУДЕНУЮ ЗИМНЮЮ ПОРУ”;

· строка.toLowerCase() – преобразует все символы строки к нижнему индексу;

· строка.concat(элемент1, элемент2, …, элементn) – используется для объединения (конкатенации) строк, например:

myName = “Александр”;

fullName = myName.concat(“ ”, “Иванов”);

· строка.indexOf(“подстрока”, [индекс]) – производит поиск подстроки и возвращает индекс ее первого вхождения. Если поиск не закончился успехом, то возвращается –1. Поиск пустой строки возвращает 0. Второй параметр индекс является необязательным, он указывает, с какого индекса следует начать поиск;

· строка.lastIndexOf(“подстрока”, [индекс]) – возвращает номер последней позиции подстроки в строке. Необязательный параметр индекс определяет, с какой позиции начинается поиск;

· строка.slice(начальный_индекс, [конечный_индекс]) – возвращает подстроку в строке по первому и последнему индексу, исключая символ с конечным_индексом. Если конечный_индекс не указан, то по умолчанию это количество символов в строке – строка.length. В следующем примере на экран выводится подстрока “вст”:

str = “Здравствуйте!”;

str1 = str.slice(4, 7);

trace(str1);

15. TextField – используется для управления характеристиками и свойствами экземпляра текстового поля.

16. XML – позволяет создавать, загружать, анализировать и изменять XML-документы.

Наши рекомендации