- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Маски клипов
Маска — это специальный объект, который определяет область видимости другого объекта. То есть, маска открывает какую-то часть маскируемого объекта, закрывая все остальное.
Открытая область — та, где в маске что-то нарисовано (учитывается только заливка). Нам нужна прямоугольная область, поэтому мы создадим новый символ и нарисуем в нем прямоугольник.
Создайте новый символ Маска типа Movie Clip, нарисуйте в нем прямоугольник любого цвета без контура и установите (на панели Properties) координаты X=0 b Y=0. Выделите слой Панель просмотра и перетащите клип Маска из библиотеки в любое место сцены. Дайте ему имя mask (панель Properties).
Теперь надо сделать так, чтобы координаты углов прямоугольника-маски совпадали с границами области рисунка, то есть, клипа picture. Кроме того, нужно сделать клип-маску невидимой.
Чтобы установить маску для клипа picture, используется метод setMask:
picture.setMask ( mask );
Здесь mask — имя клипа маски. Вся часть клипа picture, которая не перекрывается клипом mask, не будет видна.
Выделите клип picture и добавьте в обработчик события load код
with ( _root.mask ) {
_x = x0;
_y = y0;
_width = this._width;
_height = this._height;
_visible = false;
}
setMask ( _root.mask );
Проверьте работу маски — теперь увеличенное изображение не должно выходить из области, отведенной рисунку.
При тщательной проверке оказывается, что если схватить рисунок за край, можно вытянуть его так, что появляется серый фон. Чтобы избавиться от этого недостатка, мы ограничим область перетаскивания.
Область перетаскивания клипа — это прямоугольник, из которого не может выйти точка регистрации перетаскиваемого клипа (в нашем случае — левый верхний угол клипа picture). Она задается четырьмя значениями:
l — левая граница (left);
t — верхняя граница (top);
r — правая граница (right);
b — нижняя граница (bottom).
Возможные расположения увеличенного рисунка при перетаскивании показаны на рисунке. Серым цветом показана область рисунка на экране.
Чтобы в области рисунка при перетаскивании не появлялся серый фон, левый верхний угол рисунка должен находиться в заштрихованном прямоугольнике, для которого l=x0-_width, t=y0-_height, r=x0 и b=y0. Поэтому вызов функции startDrag принимает вид:
startDrag(this, false, l, t, x0, y0 );
Второй параметр, равный false, говорит о том, что клип перетаскивается именно за то место, за которое его схватили. При значении true точка регистрации «прыгнет» к курсору мыши.
Добавьте в обработчик load клипа picture код
l = x0 - _width;
t = y0 - _height;
и измените вызов функции startDrag в обработчике mouseDown:
startDrag (this, false, l, t, x0, y0 );
Проверьте работу клипа.
Можно еще немного улучшить режим увеличения. Если мы хотим увеличить глаз акулы, мы щелкаем именно там. Но сейчас рисунок сдвигается, под курсором мышки будет уже не глаз, а другая точка, что неправильно.
Исправить этот недостаток очень просто: при переходе в режим увеличения надо сразу сдвинуть координаты клипа так, чтобы точка щелчка оставалась неподвижной. При увеличении в два раза сдвиг по осям X и Y равен расстояниям от точки щелчка до левой и верхней границ клипа picture.
Перед вызовом startDrag добавьте код
_x -= _root._xmouse - _x;
_y -= _root._ymouse - _y;
Проверьте результат — точка щелчка не должна перемещаться.
