TIPS OF FLASH скрипт под маской Спецвыпуск Xakep, номер #024, стр. 024-098-2 TIPS 7 Разберемся с масками. Маска - очень удобная фича, позволяющая накреативить много прикольных эффектов. Маска - это дырка, через которую будет виден тот слой, который она маскирует. Все, что в дырку не попало, видно не будет. Самый простой пример применения маски - эффект луча фонарика, выхватывающего из темноты фрагменты пейзажа. TIPS 8 Если ты имеешь хотя бы минимальный опыт работы с флэшом, то знаешь процесс создания маски: чтобы замаскировать мувик, нужно слоем выше поместить маску и этому слою задать свойство маски. Так и никак иначе. В программинге веселее. Маску можно поместить в сам мувик, и она будет прекрасно исполнять свои обязанности!!! Фишка в том, что функция setMask оч-чень интересно себя ведет. В нашем случае это очень удобно, поскольку автоматически снимает несколько вопросов, связанных с глубиной размещения маски, именным пространством и тому подобное. В общем, программно, через функцию установки маски работать с масками можно гораздо эффективнее. TIPS 9 Чтобы сделать маску, сперва нужно нарисовать фигуру, которая будет той самой дыркой, поэтому для начала создадим функцию рисования прямоугольника для маски и поместим ее в прототип мувиклипа (это такое место, откуда любой мувиклип будет ее видеть). Функция очень проста. В качестве аргументов мы будем передавать ей соответственно: ширину, высоту, и координаты х и у точки, в которую поместим верхний левый угол этого прямоугольника. MovieClip.prototype.drawMaskRectangle = function(w, h, x, y) { // начинаем заливку черным со 50% прозрачностью: this.beginFill(0, 50); // рисуем контур прямоугольника: this.moveTo(x, y), this.lineTo(w+x, y), this.lineTo(w+x, h+y), this.lineTo(x, h+y), this.lineTo(x, y); // заканчиваем заливку: this.endFill(); }; и тут же ее проверяем на дееспособность: _root.drawMaskRectangle(100, 200, 10, 20) При тесте (Ctrl+Enter) должен нарисоваться прямоугольник размером 100х200, верхний левый угол в координатах х=10, у=20. После того как ты наэкспериментируешься с рисованием прямоугольников разного размера, а может быть и цвета, мы продолжим. Сносим строку проверки скрипта или закомментируем вот так: // _root.drawMaskRectangle(100, 200, 10, 20) - но лучше снести напрочь! TIPS 10 В предыдущем типсе мы затронули прототипы - это очень удобная вещь, так как позволяет один раз написать скрипт, а потом юзать его много раз из разных мест. Так что используй прототипы почаще. TIPS 11 Еще одна штука нам понадобится - функция вычисления первой сверху свободной глубины. Нельзя запихнуть два мувиклипа на одну глубину. Так что в нашем примере скрипт будет плодить целый слоеный пирог. Это часто встречающаяся задача при добавлении нового мувика. Поэтому и ей место в прототипе мувиклипа: MovieClip.prototype.getTopDepth = function() { // обходим все объекты в мувике: for (var mc in this) { // если тип объекта мувиклип if (typeof this[mc] == "movieclip") { // возвращаем его глубину и выходим из функции return this[mc].getDepth()+1; } } // если мы не вышли из функции раньше, значит - мувиков не было |