
- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Трассировка растровых рисунков
Для того, чтобы точно учесть форму островов, необходимо преобразовать растровый (точечный) рисунок в векторный, то есть выполнить трассировку. При этом программа выделяет области одинакового (или близкого) цвета и превращает их в векторные заливки.
Перейдите двойным щелчком в режим редактирования клипа map. Выберите команду меню Modify—Bitmap—Trace Bitmap... и преобразуйте рисунок в векторную форму при следующих параметрах:
Параметры означают следующее:
Color Threshold (цветовой порог, от 1 до 500) — предельная разница в цвете, когда цвет пикселей считается одинаковым; если уменьшать этот параметр, рисунок становится точнее, но занимает больше места в памяти;
Minimum Area — минимальная область, от 1 до 1000 пикселей, которая используется при выборе цвета пикселя;
Curve Fit (соответствие кривых) — определяет, насколько гладкими будут границы заливок; самый точный вариант — Pixels (с точностью до пикселя);
Corner Threshold — определяет, будут ли сглаживаться острые углы; возможные значения: Many Corners (много углов), Normal (что-то среднее) и Few corners (мало углов).
Теперь рисунок map.gif можно удалить из библиотеки, чтобы уменьшить размер файла. Вместо него в клипе map используется векторная фигура, полученная в результате трассировки
Точки вдоль границы
Сейчас проверка выполняется только для одной точки — центра круга. Поэтому точка может немного «залезать» на сушу. Чтобы исправить ситуацию, мы будем проверять 8 точек, равномерно распределенных по границе круга:
На рисунке в скобках для каждой точки указаны ее координаты относительно центра (смещения dx и dy). Учитывается, что на экране ось Y направлена вниз.
Для того, чтобы можно использовать цикл для перебора точек, их смещения предварительно записаны в два массива. Радиус круга r определяется как половина ширины клипа.
Добавьте в обработчик load два массива координат точек для проверки:
r = _width / 2;
dx = [0, 0.707*r, r, 0.707*r, 0, -0.707*r, -r, -0.707*r];
dy = [r, 0.707*r, 0, -0.707*r, -r, -0.707*r, 0, 0.707*r];
и измените функцию check таким образом:
function check() {
for (i=0; i<8; i++)
if ( _root.map.hitTest(_x+dx[i], _y+dy[i], true) ) {
_x = _xOld;
_y = _yOld;
break;
}
}
Сохраните фильм ЛР6_2.fla и проверьте его работу.
Теперь точка возвращается в предыдущее положение, если хотя бы одна точка оказалась в активной области карты. Оператор break (выход из цикла) служит для того, чтобы не проверять остальные точки, если одно пересечение уже найдено.
Сложная фигура и клип Два подхода
Теперь рассмотрим самый сложный случай — столкновение двух фигур неправильной формы. Нужно сразу сказать, что универсального решения этой задачи не существует, нет такой функции, которая могла бы определять, пересекаются ли два клипа с учетом формы фигур. Если два основных подхода:
обе фигуры разбиваются на более простые, для которых легко определить факт пересечения (прямоугольники, круги);
границы одной из фигур хранятся в виде набора точек, при проверке определяется, попадает ли хотя бы одна из них в область второго клипа.
В следующем примере мы будем использовать второй способ. Машинка управляется клавишами-стрелками, задача — доехать до финиша. При касании камней слышится звук удара.
|
Машину управляется клавишами-стрелками (соответствующий код уже добавлен к клипу), однако никакой реакции на столкновение с камнями и выход на финиш мы не видим.
По границам камней стоят значки — красные точки. Это символы типа Точка из библиотеки, которые определяют возможные точки столкновения машины с камнем.
|
Теперь нужно при очередном перемещении машины как-то узнать координаты этих точек. Для этого при создании клипа-камня мы построим массив, состоящий из ссылок на клипы-точки, которые являются «детьми» (дочерними объектами) для камня.