Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ActionScript 2.0 ЛР.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Маски клипов

Маска — это специальный объект, который определяет область видимости другого объекта. То есть, маска открывает какую-то часть маскируемого объекта, закрывая все остальное.

Открытая область — та, где в маске что-то нарисовано (учитывается только заливка). Нам нужна прямоугольная область, поэтому мы создадим новый символ и нарисуем в нем прямоугольник.

  1. Создайте новый символ Маска типа Movie Clip, нарисуйте в нем прямоугольник любого цвета без контура и установите (на панели Properties) координаты X=0 b Y=0. Выделите слой Панель просмотра и перетащите клип Маска из библиотеки в любое место сцены. Дайте ему имя mask (панель Properties).

Теперь надо сделать так, чтобы координаты углов прямоугольника-маски совпадали с границами области рисунка, то есть, клипа picture. Кроме того, нужно сделать клип-маску невидимой.

Чтобы установить маску для клипа picture, используется метод setMask:

picture.setMask ( mask );

Здесь mask — имя клипа маски. Вся часть клипа picture, которая не перекрывается клипом mask, не будет видна.

  1. Выделите клип picture и добавьте в обработчик события load код

with ( _root.mask ) {

_x = x0;

_y = y0;

_width = this._width;

_height = this._height;

_visible = false;

}

setMask ( _root.mask );

  1. Проверьте работу маски — теперь увеличенное изображение не должно выходить из области, отведенной рисунку.

При тщательной проверке оказывается, что если схватить рисунок за край, можно вытянуть его так, что появляется серый фон. Чтобы избавиться от этого недостатка, мы ограничим область перетаскивания.

Область перетаскивания клипа — это прямоугольник, из которого не может выйти точка регистрации перетаскиваемого клипа (в нашем случае — левый верхний угол клипа 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 точка регистрации «прыгнет» к курсору мыши.

  1. Добавьте в обработчик load клипа picture код

l = x0 - _width;

t = y0 - _height;

  1. и измените вызов функции startDrag в обработчике mouseDown:

startDrag (this, false, l, t, x0, y0 );

  1. Проверьте работу клипа.

Можно еще немного улучшить режим увеличения. Если мы хотим увеличить глаз акулы, мы щелкаем именно там. Но сейчас рисунок сдвигается, под курсором мышки будет уже не глаз, а другая точка, что неправильно.

Исправить этот недостаток очень просто: при переходе в режим увеличения надо сразу сдвинуть координаты клипа так, чтобы точка щелчка оставалась неподвижной. При увеличении в два раза сдвиг по осям X и Y равен расстояниям от точки щелчка до левой и верхней границ клипа picture.

  1. Перед вызовом startDrag добавьте код

_x -= _root._xmouse - _x;

_y -= _root._ymouse - _y;

  1. Проверьте результат — точка щелчка не должна перемещаться.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]