Работаем с Director : Image Blender
.program { FONT-SIZE: 10pt; FONT-FAMILY: Courier New } .green_program { FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New }
Автор: Frank Di Luzio
Одно из преимуществ пребывания в рядах подписчиков такого форума, как DIRECT-L, это доступ к образцам клипов. Benjamin Ellison опубликовал один такой, описывающий создание переходных эффектов между изображениями (ищите на DIRECT-L строку "cool transition effects" в августе 2001). Его письмо заканчивалось советом, чтобы кто-нибудь еще взялся за это, "причесал" и наделил характером (behavior). Меня настолько заинтриговал пример, что мне захотелось предпринять что-нибудь в этом же духе. Поэтому я связался с Беном и сказал ему, что я созрел и это как раз для меня. Что же вышло из этого? А получился переходный скрипт, который я могу использовать при переходе от фазы к фазе. Несмотря на то, что мой скрипт значительно отличается от его, продемонстрированная им методика осталась такой же.
Эти переходы созданы преобразованием изображения в оттенках серого в маску. Маска определяет, какие участки налагаемого изображения прозрачны, поэтому можно показать то, что находится позади изображения. Применяя Imaging Lingo, вы можете изменять маски и применять каждое изменение к налагаемому изображению. Применяя их в последовательности, создаем переходный эффект.
В этой статье я попытался описать, как работают элементы настраиваемого перехода Lingo. Статья сфокусирована только на Lingo, без дополнительных средств применяемом для создания переходов, но скрипт в клипе-образце содержит также много материала для собственного рассмотрения.
.program { FONT-SIZE: 10pt; FONT-FAMILY: Courier New } .green_program { FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New }
Пользуйтесь переменной stepList для изменения значения alphaThreshold для createMatte.
Trans_Mask.copyPixels (White_image, Trans_Mask.rect, White_image.rect, [#maskImage: alpha_trans.createMatte (stepList[stepListCounter])])
Затем, после каждого изменения, задайте маску элемента параметром Trans_Mask.
myImage.image.setalpha (Trans_Mask)
Каждая маска, которая была создана до сих пор, содержит четко ограниченные белые и черные области. С целью смягчения краев можно воспользоваться параметром blendLevel для метода copyPixels. Задавая blendLevel значение, меньшее чем 255, можно повлиять на прозрачность изображения, которое было скопировано. Уровень перехода, равный 0 - это когда вы совсем не пользуетесь методом copyPixel.
Trans_Mask.copyPixels (White_image,Trans_Mask.rect,white_image.rect, [#blendLevel: myblend, #maskimage: Alpha_trans.createMatte (stepList[stepListCounter])])
Каждое изменение маски теперь будет скопировано с известной долей прозрачности поверх предыдущей маски, вызывая эффект слоеного пирога. В результате получим маску, имеющую оттенки серого. Картинка снизу показывает края маски. По мере накопления слоев, каждый новый и больший слой добавляет плотность маске и затемняет предыдущий слой.
Вот более детальный вид маски, созданной из элемента перехода Lingo водоворот. Можно увидеть эффекты применения blendLevel, равного 70, в области между белой и черной зонами.
Изготовление ваших собственных растровых элементов перехода Lingo в графическом редакторе требует терпения, многих умений и частых проверок. К счастью, я знаю удобный способ создавать такие элементы во Flash.