- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Одномерное движение
Следующий пример показывает, как можно изобразить удар кия по шарику при игре в бильярд. Кий можно оттянуть мышкой вправо за кончик, чем дальше отведена мышка, тем больше сила удара.
Скопируйте файл pool.fla. Найдите элемент Невидимая кнопка в библиотеке и двойным щелчком мыши откройте его.
В первых трех кадрах, которые показывают состояния кнопки, пусто, и только в кадре Hit, где обозначается активная область кнопки, нарисован прямоугольник. На сцене в режиме разработки кнопка изображается голубым прямоугольником, а при проигрывании фильма ее не видно. Кнопка необходима затем, чтобы можно было за нее схватить мышкой и потянуть кий вправо.
Щелкните дважды по кию на сцене, чтобы открыть клип.
В этом клипе кадры 1 и 10 имеют имена init (начальное положение) и move (движение). В первом кадре слоя Программа стоит команда stop(), это значит, что клип в самом начале останавливается на 1 кадре.
Когда нужно будет оттянуть кий вправо, мы направим клип на метку move, где начинается анимация слоя Рисунок. После анимации клип снова останавливается: в кадре 30 стоит команда stop().
Выделите невидимую кнопку и добавьте обработчики событий:
on (press) {
ball._x = 360;
ball._y = 180;
power.text = "0";
x0 = _root._xmouse;
track = true;
}
on (dragOut) {
stick.gotoAndPlay ("move");
}
on (release, releaseOutside) {
stick.gotoAndStop ("init");
track = false;
}
При нажатии кнопки (событие press) координаты шарика (клипа с именем ball) устанавливаются в начальное положение, в текстовое поле power выводится нулевая сила, в переменной x0 запоминается x-координата щелчка мыши. Логическая переменная track показывает, идет ли перетаскивание — при нажатии кнопки она принимает значение true («да»).
Когда мышь выходит из активной области при нажатой кнопке мыши (событие dragOut) кий (клип stick) переходит к кадру move и начинается анимация.
Когда кнопка мышь отпущена (события release и releaseOutside) кий резко возвращается в исходное положение (на метку init). Переменной track присваивается значение false (перетаскивания больше нет).
Выделите шарик и добавьте к нему обработчик события:
onClipEvent (mouseMove) {
if ( _root.track ) {
P = _root._xmouse - _root.x0;
_root.power.text = P;
}
}
Клип получает событие mouseMove даже тогда, когда мышь находится вне клипа. Если идет перетаскивание (переменная track монтажного стола _root равна true), запоминаем разницу между текущей x-координатой мыши и начальной координатой x0 (силу удара) в переменной P и выводит это значение в текстовое поле power.
Обратите внимание, что при обращении к переменным track и x0 надо указывать их адрес _root, тогда как в коде невидимой кнопки мы этого не делали. Дело в том, что кнопка является частью монтажного стола и работает с его переменными напрямую, а клип имеет свой монтажный стол и свои переменные (например, переменная P относится к клипу).
Теперь нужно, чтобы шарик двигался после удара. Для этого удобно использовать обработчик enterFrame. Сначала рассмотрим простейший вариант: с каждым вызовом шарик смещается на одинаковое расстояние, а при этом оставшаяся сила уменьшается.
Добавьте к шарику еще один обработчик события:
onClipEvent (enterFrame) {
if ( ! _root.track && P > 2 ) {
_x -= 5;
P -= 2;
}
}
Движение происходит только тогда, когда нет перетаскивания (переменная-флаг track равна false) и оставшаяся сила P больше 2. Два знака & рядом означают логическую операцию «И» (одновременное выполнение двух условий).
На каждом шаге x-координата клипа уменьшается на 5 пикселей, а сила — на 2 единицы.
Проверив клип, мы видим, что шарик движется неестественно: его скорость постоянна и он резко останавливается.
Чтобы улучшить анимацию, используем следующие идеи:
на каждом шаге шарик смещается на расстояние, пропорциональное оставшейся силе;
сила уменьшается неравномерно, на каждом шаге теряется 10 процентов, то есть P умножается на 0.9.
Измените обработчик события enterFrame:
onClipEvent (enterFrame) {
if ( ! _root.track && P > 2 ) {
_x -= 0.5*P;
P = 0.9*P;
}
}
Проверьте ролик и сохраните файл c именем ЛР4_1.fla
