- •Основы языка ActionScript 2.0 Для чего нужен Actionscript?
- •События
- •Действия
- •Операторы
- •Ключевые слова
- •Фигурные скобки
- •Точка с запятой
- •Отступы и пробелы
- •Переменные Объявление
- •Кавычки
- •Комментарии
- •Видимость переменных
- •Присваивание
- •Объекты
- •Условные операторы
- •Цикл с переменной
- •Циклы с условием
- •Перечисление свойств
- •Управление циклом
- •Лабораторная работа №1 «Знакомство с ActionScript» Панель Actions
- •Инструменты работы с кодом
- •Управление проигрыванием. Кнопки Команды управления
- •Скопируйте файл ship.Fla из папки лр1 в свою папку и в дальнейшем работайте только с ним!
- •Реакции на события
- •Метки кадров
- •Адреса: дети, родители и корень
- •Абсолютные адреса
- •Относительные адреса
- •Индивидуальное задание
- •Лабораторная работа №2 «Свойства и события клипа»
- •Свойства
- •Типы объектов
- •Обработчики событий
- •Применение события клипа
- •Присутствие: onClipEvent (load)
- •Отсутствие: onClipEvent (unLoad)
- •Движущая сила: onClipEvent (enterFrame)
- •Перемещение: onClipEvent (mouseMove)
- •Применение методов как обработчиков событий
- •Свойства объектов
- •События клипа
- •События мыши
- •Перетаскивание
- •События клипа
- •Отличие кнопки от клипа
- •Обработка событий мыши и клавиатуры
- •Функции
- •Типы функций
- •Защита паролем
- •Индивидуальное задание
- •Лабораторная работа №3 «Использование объектов среды Flash» Глобальный объект Key
- •Самостоятельное задание
- •Работа с текстом (String, Selection) Объект String — строка
- •Объект Selection
- •Использование объекта Color
- •Массивы Основные понятия
- •Копирование
- •Многомерные массивы
- •Методы для работы с массивами
- •Работа с массивами
- •Дата и время Объект Date
- •Периодический вызов функции
- •Индивидуальное задание
- •Лабораторная работа № 4 «Организация одномерного движения объектов» Математические функции
- •Одномерное движение
- •Движение на плоскости Равномерное движение
- •Неравномерное движение
- •Организация отскока объектов Одномерное движение
- •Индивидуальное задание
- •Лабораторная работа № 5«Организация движения объектов по наклонной плоскости»
- •Векторы
- •Отскок от наклонной плоскости
- •Шарик в кольце
- •Маятник
- •Загрузка символа из библиотеки
- •Определение границ клипа
- •Точка и клип Вторая форма hitTest
- •Трассировка растровых рисунков
- •Точки вдоль границы
- •Сложная фигура и клип Два подхода
- •Цикл по всем дочерних объектов
- •Локальные и глобальные координаты
- •Обработка события для звука
- •Загрузка фильмов
- •Использование Переменных
- •Локальные переменные
- •Типы функций
- •Обработчики событий
- •Описание проекта
- •Загрузка Flash-фильмов
- •Работа с рисунками
- •Увеличение рисунка
- •Маски клипов
- •Звуковые файлы
- •Баннеры
- •Компоненты Обзор
- •Текстовые поля
- •Форматирование
- •Работа с базой пользователей
- •Текст-ссылка
- •Регистрация
- •Радиокнопки
- •Выпадающий список
- •Выключатели
- •Формат компонентов
- •Добавление пользователя
- •Индивидуальное задание
- •Лабораторная работа № 9 «Рисование из программы»
- •Отрезки
- •Заливки Одноцветная заливка
- •Добавление методов к MovieClip
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Функции
Функция — это блок кода, который можно использовать многократно (вызывать). Преимущество функций состоит в том, что
не нужно несколько раз писать одинаковый код, рискуя ошибиться при переписывании;
сокращается длина программы;
при отладке изменения нужно вносить только в одно место.
Функции объявляются с помощью слова function:
function qq() {
...
}
Имя этой функции — qq, при ее вызове qq(); выполняются все команды внутри фигурных скобок. Многоточие здесь и далее означает любой код на ActionScript.
Функция может принимать параметры или аргументы — дополнительные данные, которые влияют на ее работу. Параметры перечисляются через запятую в скобках:
function qq ( x ) { ... }
function ww ( x:Number, s:String ) { ... }
Функция qq принимает один параметр, его тип может быть любой. Функция ww принимает два параметра, причем их типы жестко заданы: первый — число, второй — символьная строка.
Функция может возвращать результат (число, строку, логическое значение и т.д.) с помощью оператора return. Например:
function Sum ( x, y ) {
var s = x + y;
return s; // или return x + y;
}
Чтобы использовать это значение, надо записать его в переменную:
w = Sum ( 2, 3 );
trace ( w );
Типы функций
Функции, так же, как и переменные, бывают трех типов:
функции временной шкалы (функции клипа), которые связаны с клипом и могут рассматриваться как его методы;
глобальные функции, которые можно использовать без указания адреса из любого места в программе;
локальные функции, которые объявляются внутри другой функции.
Чаще всего используют функции клипов. Например, если в одном из кадров главной временной шкалы объявлена функция
function qq () { ... }
с другой временной шкалы (из обработчика другого клипа) она вызывается как _root.qq().
Ту же функцию можно объявить по-другому:
qq = function() { ... }
При этом фактически создается переменная типа «ссылка на функцию» и в нее записывается адрес кода. Разница (в сравнении с первым способом) состоит в том, что в переменную qq можно потом записать адрес другой функции:
qq = function () { trace(1); }
qq();
qq = newFunc;
qq();
function newFunc () { trace ( 2 ); }
Если в первый раз при выполнении оператора qq() вызывается первая (безымянная) функция, то второй раз — функция newFunc. Заметим, что после присваивания qq=newFunc к первой функции уже никак не обратиться — ее адрес потерян.
Глобальные функции объявляются с помощью слова _global:
_global.qq = function ( x ) { ... }
Эту функцию можно вызывать просто как qq() из любого места программы, в том числе из обработчиков событий клипов.
Локальные функции объявляются внутри другой функции и известны только там. В примере
trace(b);
a();
function a() {
function b() {}
trace(b);
}
функция b — локальная для функции a, поэтому первый вызов trace(b) даст результат undefined (не определено), а второй (изнутри функции a) — [type Function], то есть, найдена функция с таким именем.
В созданном фильме остался еще один недостаток — программа позволяет перемещать рисунок больше, чем нужно, открывая фон за рисунком. Чтобы исправить положение, мы напишем функцию check, которая будет проверять допустимость координат _x и _y и возвращать рисунок в разрешенное состояние. Эту функцию можно связать с первым кадром слоя Кнопки.
Вспомним, что размер рисунка — 2000 на 400 пикселей, размер сцены — 550 на 400 пикселей, а диаметр круга-маски — 240 пикселей. Несложные расчеты показывают, что x-координата левого верхнего угла рисунка должна находиться в интервале от -1605 до 155, а его y-координата — в интервале от -80 до 80.
Выделите первый кадр слоя Кнопки и добавьте к нему код
function check() {
if ( panorama._x < -1605 ) panorama._x = -1605;
if ( panorama._x > 155 ) panorama._x = 155;
if ( panorama._y < -80 ) panorama._y = -80;
if ( panorama._y > 80 ) panorama._y = 80;
}
Теперь в конец каждого обработчика (для всех кнопок и клавиш) нужно добавить вызов функции check, например, так:
on (release){
panorama._x -= 50;
check();
}
Сделайте это, сохраните файл и проверьте его работу.
В современных программах желательно обеспечить возможность разнообразного управления, в том числе — от колесика мышки. Оказывается, для этого достаточно добавить всего несколько строк кода.
Добавьте к кадру 1 слоя Кнопки такой код:
ear = new Object();
ear.onMouseWheel = function ( step ) {
panorama._x += 5*step;
check();
}
Mouse.addListener ( ear );
Запустите ролик, щелчком мыши сделайте его окно активным и проверьте, как работает горизонтальная прокрутка панорамы с помощью колеса мыши.
Теперь обсудим код. В строчке
ear = new Object();
в памяти строится новый объект с именем ear. Что это за объект — пока неясно, мы не определили ни его свойства, ни методы.
Далее определяется метод onMouseWheel (mouse — мышь, wheel — колесо). Это значит, что объект может реагировать на событие mouseWheel (прокрутка колеса мыши), если об этом ему кто-нибудь сообщит. Обработчик события — это функция, принимающая один параметр — число шагов прокрутки. Как и насколько переместить панораму — определяем мы в теле функции (можно было, например, сделать вертикальную прокрутку). После изменения координат идет проверка с помощью функции check.
Самая важная строчка:
Mouse.addListener ( ear );
Здесь сказано, что объект ear становится «слушателем» (listener) глобального объекта Mouse, то есть, будет получать информацию о всех событиях, происходящих с мышью. В частности, при прокрутке колесика происходит событие mouseWheel и будет вызвана написанная нами функция.
