
- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Загрузка символа из библиотеки
Теперь можно перетащить на сцену клип-прямоугольник и перемещать его вслед за машиной. Но мы применим другой прием — «вытащим» клип из библиотеки во время работы ролика, используя код на ActionScript.
Сначала надо подготовить клип — дать ему имя.
_root.attachMovie("rectangle", "rect", _root.getNextHighestDepth() ); |
Здесь мы вызвали метод attachMovie (присоединить клип) для главного монтажного стола _root. У этого метода три параметра:
кодовое имя символа, в данном случае — rectangle;
имя экземпляра, к новому клипу можно будет обращаться как _root.rect;
глубина клипа на монтажном столе (от -16384 до 1048575).
Для того, чтобы расположить клип поверх всех существующих (на этом монтажном столе), мы использовали метод getNextHighestDepth («получить следующую самую высокую глубину»). Она вернет номер первого свободного уровня.
Определение границ клипа
Сейчас созданный прямоугольник находится в левом верхнем углу, а нужно, чтобы он перемещался вместе с машиной.
Границы прямоугольника для любого клипа можно определить с помощью метода getBounds. Например, границы клипа qq на главном монтажном столе определяются так:
bounds = qq.getBounds(_root);
В переменную bounds будет помещен объект, у которого есть 4 свойства: xMin, xMax, yMin и yMax, определяющие предельные значения области по осям X и Y. Разница xMax-xMin дает ширину прямоугольника, а yMax-yMin — его высоту.
bounds = this.getBounds(_root); with (_root.rect) { _x = bounds.xMin; _y = bounds.yMin; _width = bounds.xMax - bounds.xMin; _height = bounds.yMax - bounds.yMin; }
|
Запись with(_root.rect){...} говорит о том, что все команды внутри фигурных скобок относятся к свойствам объекта _root.rect. Вместо этого можно было записать:
_root.rect._x = bounds.xMin;
_root.rect._y = bounds.yMin;
_root.rect._width = bounds.xMax - bounds.xMin;
_root.rect._height = bounds.yMax - bounds.yMin;
Использование with(...) сокращает запись, но может усложнить понимание кода.
Точка и клип Вторая форма hitTest
В этом примере красная точка (изображающая судно или яхту) при нажатии клавиш-стрелок может перемещаться по карте. Однако точка не может зайти на сушу.
Здесь используется еще один вариант вызова стандартной функции hitTest:
qq.hitTest ( x, y, true )
Эта функция определяет, попадает ли точка с координатами x и y (это глобальные координаты, для главного монтажного стола) в область клипа с именем qq. Третий параметр, равный true, означает, что надо учитывать форму фигуры внутри клипа, то есть попадание точки в пустые области «не считается».
Если третий параметр будет равен false, функция определяет, попала ли точка в прямоугольник, ограничивающий клип
Скопируйте файл map.fla. Преобразуйте карту в клип Карта (клавиша F8, тип Movie Clip). Дайте экземпляру клипа имя map.
Создайте новый слой Точка и перетащите на него клип Точка из библиотеки. С помощью панели Properties установите высоту и ширину объекта 10 пикселей. Добавьте к клипу код, позволяющий двигать точку по экрану клавишами-стрелками
onClipEvent (load) {
v = 2;
function move ( d ) {
r = _rotation * Math.PI / 180;
_x += d * Math.sin(r);
_y -= d * Math.cos(r);
}
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.UP)) _y -= v;
else
if (Key.isDown(Key.DOWN)) _y += v;
if (Key.isDown(Key.LEFT)) _x -= v;
else
if (Key.isDown(Key.RIGHT)) _x += v;
}
Проверьте ролик.
В простейшем случае, когда объект достаточно мал, можно проверить только попадание его центра в активную зону клипа.
Добавьте в обработчик события load строчки
_xOld = _x;
_yOld = _y;
и функцию для проверки столкновения с картой:
function check() {
if ( _root.map.hitTest(this._x, this._y, true) ) {
_x = _xOld;
_y = _yOld;
}
}
В самое начало обработчика enterFrame вставьте вызов функции
check();
Посмотрите, как двигается точка и сохраните фильм с именем ЛР6_2.fla