- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
События мыши
Кнопки и клипы могут обрабатывать несколько событий:
press — над объектом нажата кнопка мыши;
release — над объектом отпущена кнопка мыши;
releaseOutside — кнопка мыши отпущена вне объекта;
rollOver — указатель мыши наведен на объект (без нажатия);
rollOut — указатель мыши ушел с объекта (без нажатия);
dragOut — указатель мыши ушел с объекта при нажатой кнопке;
dragOver — при нажатой кнопке мышь уходит с объекта, а затем наводится на него снова (аналогия — «чистим ботинки»).
Мы сделаем так, чтобы при событии rollOut ракета становилась немного более прозрачной (на 5 процентов). Для этого надо уменьшить значение _alpha.
Добавьте обработчик события мыши для клипа Ракета:
on (rollOut){
_alpha -= 5;
}
Заметьте, что параметр _alpha по смыслу не должен быть меньше нуля.
Перетаскивание
Перетаскивание мышкой тоже делается очень просто: при нажатии кнопки на объекте (событие press) надо «захватить» объект и начать перетаскивание:
startDrag ( this );
В скобках указывается адрес объекта (this означает «текущий объект», то есть клип).
При отпускании кнопки (событие release) надо закончить перетаскивание:
stopDrag();
Добавьте обработчики событий мыши для клипа Ракета:
on ( press ){
startDrag(this);
}
on ( release ){
stopDrag();
}
В скобках после слова on можно перечислять через запятую несколько событий, на которые надо реагировать одинаково. Для этого часто удобно использовать средство Script Assist (помощник скриптов).
Выделите строчку кода on(release) и щелкните по словам Script Assist в правом верхнем углу панели Actions. Отметьте флажок releaseOutside и закройте окно повторным щелчком по словам Script Assist.
Теперь при отпускании мыши за пределами клипа перетаскивание также заканчивается.
События клипа
Клип, как уже говорилось, также может реагировать на события mouseDown, mouseUp и mouseMove. Важно, что эти обработчики вызываются не только тогда, когда мышь над клипом, а при любом изменении состояния мыши. При этом координаты курсора хранятся в свойствах _xmouse и _ymouse главного монтажного стола _root.
Например, мы сделаем, чтобы ракета вращалась против часовой стрелке, если мышь двигается в левой половине поля, и по часовой стрелке, если в правой. Для этого надо написать обработчик события mouseMove, в котором менять свойство _rotation клипа Ракета. Чтобы определить направление вращения, будем сравнивать x-координату клипа с половиной ширины окна, то есть с _root._width/2.
Добавьте еще один обработчик к коду клипа:
onClipEvent (mouseMove) {
if (_root._xmouse < _root._width/2)
_rotation -= 0.5;
else _rotation += 0.5;
}
При просмотре обнаруживается неточность: во время перетаскивания ракета продолжает вращаться, ведь событие mouseMove происходит и вызывается обработчик. Чтобы прекратить вращение во время перетаскивания, надо где-то запоминать, что мы тащим ракету. Легче всего сделать это при помощи специальной логической переменной dragging, которая может принимать значения true и false. В начале перетаскивания мы запишем в эту переменную true, а когда перетаскивание закончено, запишем в нее false.
Измените обработчики событий:
on ( press ){
startDrag(this);
dragging = true;
}
on ( release, releaseOutside ){
stopDrag();
dragging = false;
}
Теперь можно использовать значение этой переменной в обработчике mouseMove — вращать ракету только тогда, когда dragging=false.
Измените обработчик события:
onClipEvent (mouseMove) {
if ( ! dragging ) {
if (_root._xmouse < _root._width/2)
_rotation -= 0.5;
else _rotation += 0.5;
}
}
Восклицательный знак означает операцию НЕ, так что условный оператор if(!dragging) имеет смысл «если не тащим ракету». Только при этом условии изменяется свойство _rotation.
