- •Юридическая информация
- •Содержание
- •Глава 1. Введение в ActionScript 3.0
- •О языке ActionScript
- •Преимущества ActionScript 3.0
- •Новые возможности ActionScript 3.0
- •Возможности языка ядра
- •Функции прикладных интерфейсов программирования (API)
- •Глава 2. Начало работы с языком ActionScript
- •Основы программирования
- •Какие функции выполняют компьютерные программы
- •Переменные и постоянные
- •Типы данных
- •Работа с объектами
- •Свойства
- •Методы
- •События
- •Основные сведения об обработке событий
- •Процесс обработки событий
- •Примеры обработки событий
- •Создание экземпляров объекта
- •Общие элементы программы
- •Операторы
- •Комментарии
- •Управление исполнением программы
- •Пример. Фрагмент анимации портфолио (Flash Professional)
- •Подготовка и добавление интерактивных элементов
- •Создание и добавление кнопок
- •Написание кода
- •Проверка приложения
- •Создание приложений с ActionScript
- •Параметры для организации кода
- •Правильный выбор инструмента
- •Процесс разработки в ActionScript
- •Создание пользовательских классов
- •Стратегия разработки класса
- •Написание кода для класса
- •Пример: создание базового приложения
- •Проектирование приложения ActionScript
- •Создание проекта HelloWorld и класса Greeter
- •Добавление кода к классу Greeter
- •Создание приложения с использованием кода ActionScript
- •Публикация и проверка приложения ActionScript
- •Модернизация приложения HelloWorld
- •Глава 3. Язык ActionScript и его синтаксис
- •Обзор языка
- •Объекты и классы
- •Пакеты и пространства имен
- •Пакеты
- •Создание пакетов
- •Импорт пакетов
- •Пространства имен
- •Переменные
- •Знакомство с областью действия переменной
- •Значения по умолчанию
- •Типы данных
- •Проверка типа
- •Проверка типа во время компиляции
- •Проверка типа при выполнении
- •Оператор is
- •Оператор as
- •Динамические классы
- •Описания типов данных
- •Логический тип данных (Boolean)
- •Тип данных int
- •Тип данных Null
- •Тип данных Number
- •Тип данных String
- •Тип данных uint
- •Тип данных void
- •Тип данных Object
- •Преобразования типа
- •Синтаксис
- •Чувствительность к регистру
- •Синтаксис с точкой
- •Синтаксис с косой чертой
- •Литералы
- •Точки с запятой
- •Скобки
- •Комментарии
- •Ключевые слова и зарезервированные слова
- •Константы
- •Операторы
- •Старшинство и ассоциативность операторов
- •Основные операторы
- •Постфиксные операторы
- •Унарные операторы
- •Мультипликативные операторы
- •Аддитивные операторы
- •Операторы побитового сдвига
- •Реляционные операторы
- •Операторы равенства
- •Побитовые логические операторы
- •Логические операторы
- •Оператор условия
- •Операторы присваивания
- •Условия
- •инструкция if..else
- •инструкция if..else if
- •switch
- •Повтор
- •for each..in
- •while
- •do..while
- •Функции
- •Концепции основной функции
- •Параметры функций
- •Функции в качестве объектов
- •Область действия функции
- •Глава 4. Объектно-ориентированное программирование на языке ActionScript
- •Введение в объектно-ориентированное программирование
- •Классы
- •Определения классов
- •Атрибуты свойств классов
- •Атрибуты пространства имен для управления доступом
- •Атрибут static
- •Определенные пользователем атрибуты пространства имен
- •Переменные
- •Методы
- •Методы-конструкторы
- •Статические методы
- •Методы экземпляра
- •Методы доступа get и set
- •Связанные методы
- •Перечисления с классами
- •Классы встроенных ресурсов
- •Использование классов встроенных ресурсов в инструменте Flash Professional
- •Использование классов встроенных ресурсов с помощью компилятора Flex
- •Интерфейсы
- •Определение интерфейса
- •Реализация интерфейса в классе
- •Наследование
- •Свойства экземпляра и наследование
- •Переопределение методов
- •Статические свойства не наследуются
- •Статические свойства и цепочка области действия
- •Дополнительные темы
- •История объектно-ориентированного программирования на языке ActionScript
- •Объект класса в ActionScript 3.0
- •Объект признаков
- •Объект прототипа
- •Пространство имен AS3
- •Пример: GeometricShapes
- •Определение классов GeometricShapes
- •Определение общего поведения с помощью интерфейсов
- •Определение классов фигур
- •Полиморфизм и фабричный метод
- •Расширение примера приложения
ИЗУЧЕНИЕ ACTIONSCRIPT 3.0 |
70 |
Язык ActionScript и его синтаксис
package flash.events
{
public class MouseEvent extends Event
{
public static const CLICK:String = "click";
public static const DOUBLE_CLICK:String = "doubleClick"; public static const MOUSE_DOWN:String = "mouseDown"; public static const MOUSE_MOVE:String = "mouseMove";
...
}
}
Операторы
Операторы являются специальными функциями, принимающими один или несколько операндов и возвращающими значения. Операнд — это значение, обычно литерал, переменная или выражение, которые оператор использует в качестве входных данных. Например, в следующем программном коде операторы сложения (+) и умножения (*) используются с тремя литеральными операндами (2, 3, 4) для получения значения. Это значение затем используется оператором присваивания (=), чтобы назначить возвращаемое значение, 14, переменнойsumNumber.
var sumNumber:uint = 2 + 3 * 4; // uint = 14
Операторы могут быть унарными, бинарными или тернарными. Унарный оператор принимает один операнд. Например, оператор инкрементального увеличения (++) является унарным оператором, поскольку он принимает только один операнд. Бинарный оператор принимает два операнда. Например, оператор деления (/) принимает два операнда. Тернарный оператор принимает три операнда. Например, оператор условия (?:) принимает три операнда.
Некоторые операторы являются перегруженными; это означает, что они ведут себя по-разному в зависимости от типа или количества переданных ими операндов. Оператор сложения (+) является примером перегруженного оператора, который ведет себя по-разному в зависимости от типа операндов. Если оба операнда являются числами, оператор сложения возвращает сумму этих значений. Если оба операнда являются строками, оператор сложения возвращает последовательное соединение двух операндов. В следующем программном коде показано, как оператор по-разному ведет себя в зависимости от операндов.
trace(5 + 5); // 10 trace("5" + "5"); // 55
Поведение операторов также может отличаться в зависимости от числа передаваемых операндов. Оператор вычитания (-) является одновременно унарным и бинарным оператором. Если оператор вычитания используется только с одним операндом, оператор меняет его знак и возвращает результат. Если оператор вычитания используется с двумя операндами, он возвращает разность между ними. В следующем примере показан оператор вычитания, используемый вначале как унарный оператор, а затем как бинарный.
trace(-3); // -3 trace(7 - 2); // 5
Последнее обновление 12.5.2011.
ИЗУЧЕНИЕ ACTIONSCRIPT 3.0 |
71 |
Язык ActionScript и его синтаксис
Старшинство и ассоциативность операторов
Старшинство и ассоциативность операторов определяют порядок, в котором обрабатываются операторы. Хотя может показаться абсолютно естественным для всех, кто знаком с арифметическими операциями, что компилятор должен обрабатывать оператор умножения (*) перед оператором сложения (+), в действительности компилятору необходимо явное указание того, какие операторы обрабатывать в первую очередь. Такие инструкции обычно упоминаются как старшинство операторов. ActionScript определяет старшинство операторов по умолчанию, которое можно изменить с помощью оператора скобки (()). Например, в следующем программном коде изменяется заданное по умолчанию старшинство операторов из предыдущего примера, чтобы заставить компилятор обработать оператор сложения перед оператором умножения.
var sumNumber:uint = (2 + 3) * 4; // uint == 20
Могут возникнуть ситуации, в которых в одном выражении встретятся два или больше операторов одного старшинства. В таких случаях компилятор использует правила ассоциативности, чтобы определить, какой оператор обрабатывать в первую очередь. Все бинарные операторы, за исключением оператора присваивания, являются ассоциируемыми слева , а это значит, что операторы слева обрабатываются раньше, чем операторы справа. Операторы присваивания и оператор условия (?:) являются ассоциируемыми справа операторами, и это означает, что операторы справа обрабатываются раньше, чем операторы слева.
Например, рассмотрим операторы меньше (<) и больше (>), имеющие одинаковое старшинство. Если оба оператора используются в одном выражении, оператор слева обрабатывается раньше, поскольку оба оператора являются ассоциируемыми слева. Это означает, что результат выполнения следующих двух инструкций будет одинаков.
trace(3 > 2 < 1); // false trace((3 > 2) < 1); // false
Оператор «больше» обрабатывается в первую очередь, что приводит к итоговому значению true, поскольку операнд 3 больше, чем операнд 2. Значение true затем передается оператору «меньше» вместе с операндом 1. В следующем программном коде показано промежуточное состояние.
trace((true) < 1);
Оператор «меньше» преобразует значение true в цифровое значение 1 и сравнивает это числовое значение со вторым операндом 1, возвращая значение false (значение 1 не меньше значения 1).
trace(1 < 1); // false
Заданную по умолчанию ассоциативность слева можно изменить с помощью оператора скобки. Можно заставить компилятор обрабатывать оператор «меньше» первым, если заключить этот оператор и его операнды в скобки. В следующем примере используется оператор скобки, чтобы получить другой результат, взяв в качестве операндов числа из предыдущего примера.
trace(3 > (2 < 1)); // true
Оператор «меньше» обрабатывается в первую очередь, что приводит к итоговому значению false, поскольку операнд 2 не меньше, чем операнд 1. Значение false затем передается оператору «больше» вместе с операндом 3. В следующем программном коде показано промежуточное состояние.
trace(3 > (false));
Оператор «больше» преобразует значение false в числовое значение 0 и сравнивает это числовое значение с операндом 3, возвращая значение true (значение 3 больше, чем 0).
trace(3 > 0); // true
Последнее обновление 12.5.2011.
ИЗУЧЕНИЕ ACTIONSCRIPT 3.0 |
72 |
Язык ActionScript и его синтаксис
В следующей таблице приведен список операторов ActionScript 3.0 в порядке уменьшения их старшинства. Каждая строка таблицы содержит операторы одинакового старшинства. Каждая строка операторов имеет более высокое старшинство, чем строка, отображающаяся ниже в таблице.
Группа |
Операторы |
|
|
Основные |
[] {x:y} () f(x) new x.y x[y] <></> @ :: .. |
|
|
Постфиксные |
x++ x-- |
|
|
Унарные |
++x --x + - ~ ! delete typeof void |
|
|
Мультипликативные |
* / % |
|
|
Аддитивные |
+ - |
|
|
Побитовый сдвиг |
<< >> >>> |
|
|
Реляционные |
< > <= >= as in instanceof is |
|
|
Равенство |
== != === !== |
|
|
Побитовое AND |
& |
|
|
Побитовое XOR |
^ |
|
|
Побитовое OR |
| |
|
|
Логическое AND |
&& |
|
|
Логическое OR |
|| |
|
|
Условие |
?: |
|
|
Присваивание |
= *= /= %= += -= <<= >>= >>>= &= ^= |= |
|
|
Запятая |
, |
|
|
Основные операторы
В число основных операторов входят те операторы, которые используются для создания литералов Array и Object, выражений группирования, функций вызова, инициации экземпляров классов, а также доступа к свойствам.
Все основные операторы, как показано в следующей таблице, имеют одинаковое старшинство. Операторы, являющиеся частью спецификации E4X, показаны с условным знаком (E4X).
Оператор |
Выполняемая операция |
|
|
[] |
Инициализируется массив |
|
|
{x:y} |
Инициализируется объект |
|
|
() |
Группируются выражения |
|
|
f(x) |
Выполняется вызов функции |
|
|
new |
Выполняется вызов конструктора |
|
|
x.y x[y] |
Выполняется доступ к свойству |
|
|
<></> |
Инициализируется объект XMLList (E4X) |
|
|
Последнее обновление 12.5.2011.
ИЗУЧЕНИЕ ACTIONSCRIPT 3.0 |
73 |
||
Язык ActionScript и его синтаксис |
|
||
|
|
|
|
Оператор |
Выполняемая операция |
|
|
|
|
|
|
@ |
Выполняется доступ к атрибуту (E4X) |
|
|
|
|
|
|
:: |
Уточняется имя (E4X) |
|
|
|
|
|
|
.. |
Выполняется доступ к производному XML-элементу (E4X) |
|
|
|
|
|
|
Постфиксные операторы
Постфиксные операторы берут какой-либо оператор и либо инкрементально увеличивают, либо декрементально уменьшают его значение. Хотя эти операторы и являются унарными, они классифицируются отдельно от остальных унарных операторов из-за своего высокого старшинства и особого поведения. Если постфиксный оператор используется как часть более крупного выражения, значение выражения возвращается до обработки этого оператора. Например, в следующем программном коде показано, что значение выражение xNum++ возвращается до того, как значение инкрементально увеличивается.
var xNum:Number = 0; trace(xNum++); // 0 trace(xNum); // 1
Все постфиксные операторы, как показано в следующей таблице, имеют одинаковое старшинство.
Оператор |
Выполняемая операция |
|
|
++ |
Инкрементально увеличивает (постфиксный) |
|
|
-- |
Декрементально уменьшает (постфиксный) |
|
|
Унарные операторы
Унарные операторы получают один операнд. Операторы инкрементального увеличения (++) и декрементального уменьшения (--) в этой группе являются префикснымиоператорами, и это означает, что они могут появляться перед операндами в выражении. Префиксные операторы отличаются от своих постфиксных эквивалентов тем, что операции инкрементального увеличения и декрементального уменьшения выполняются перед возвращением значения всего выражения. Например, в следующем программном коде показано, что значение выражение ++xNum возвращается до того, как значение инкрементально увеличивается.
var xNum:Number = 0; trace(++xNum); // 1 trace(xNum); // 1
Все унарные операторы, как показано в следующей таблице, имеют одинаковое старшинство.
Оператор |
Выполняемая операция |
|
|
++ |
Инкрементально увеличивает (префиксный) |
|
|
-- |
Декрементально уменьшает (префиксный) |
|
|
+ |
Унарный + |
|
|
- |
Унарный — (отрицание) |
|
|
! |
Логическое NOT |
|
|
~ |
Побитовое NOT |
|
|
Последнее обновление 12.5.2011.