Программная маска на AS2, скрывающая содержимое ролика, не предназначенное для отображения

6 Марта 2013 | Автор: Дунин Владимир

Было несколько похожих случаев, когда при согласовании flash-баннера с клиентом мне задавали вопросы, смысл которых удавалось понять далеко не сразу. Только спустя несколько минут я начинал понимать, что клиент озадаченно интересуется, почему объекты ролика выходят за границы созданного баннера. И действительно, если просматривать на весь экран файлы .exe, которые я делаю для согласования с клиентами, то становится видно все нутро баннера, не предназначенное для отображения на сайте. На этом скриншоте видно, что я имею ввиду.
 

 
Конечно все это мелочи, и клиенту можно объяснить почему так получается, и что на площадке размещения все “лишнее” просто не будет видно, но мне стало интересно решить этот вопрос по-другому. Я просто накидал небольшой скриптик на AS2, который вставил в шаблоны баннеров и забыл о придирках клиентов. Суть скрипта – делать программно маску по размеру баннера, которая скрывает с глаз все “лишнее”. В следующем скриншоте показан результат работы скрипта:


 
А это сам код:

Stage.scaleMode = "noScale";

var maskerWidth = ширина;
var maskerHeight = высота;

this.createEmptyMovieClip("maskerMc",this.getNextHighestDepth());

maskerMc.beginFill(0xFF0000);
maskerMc.moveTo(0,0);
maskerMc.lineTo(maskerWidth,0);
maskerMc.lineTo(maskerWidth,maskerHeight);
maskerMc.lineTo(0,maskerHeight);
maskerMc.lineTo(0,0);
maskerMc.endFill();

_root.setMask("maskerMc");

Разбираем по строчкам:

  1. Запрещаем масштабирование
  2. Объявляем переменную maskerWidth и присваиваем значение ширины ролика
  3. Объявляем переменную maskerHeight и присваиваем значение высоты ролика
  4. Создаем мувиклип maskerMc
  5. Все строки, начинайющиеся с maskerMc: рисуем в мувиклипе прямоугольник с шириной и высотой, взятой из переменных maskerWidth и  maskerHeight
  6. Делаем мувиклип с прямоугольником маской для _root