Помещение перехода на основу
До сих пор была изложена методика, применяемая для создания масок из растровых картинок или элементов перехода Flash. Но как на деле заставить переход работать?
Во-первых, нам необходимо изображение, способное воспринимать маску, созданную нами из элементов перехода Lingo. Это будет, бесспорно, опорное изображение в кадре среди множества, где будет предпринята групповая операция. Следующий код создает новый растр опорного изображения.
Поскольку изображение подлежит маскированию, оно должно быть 32 -битовым.
stageImage = new (#bitmap)
StageImage.image = image (myWidth, myHeight, 32)
stageImage.image.copyPixels ((the stage).image, stageImage.rect, rect (0, 0, myWidth, myHeight)) stageImage.useAlpha=TRUE
stageImage.image.setalpha(255)
Затем, перед рассмотрением следующего кадра, будет создан спрайт для помещения вновь созданного изображения над опорным. Эта методика (динамическое размещение канала спрайта) официально не поддерживается фирмой Macromedia. Более безопасный путь - это зарезервировать канал спрайтов и спрайт, чем создавать их на лету.
EmptySpriteChannel = the lastChannel
repeat while sprite (EmptySpriteChannel).type <> 0
if EmptySpriteChannel = 1 then
alert "This transition requires an empty Sprite channel"
exit
end if
EmptySpriteChannel = EmptySpriteChannel - 1
end repeat
puppetsprite EmptySpriteChannel,true
sprite (EmptySpriteChannel).member = stageImage
sprite (EmptySpriteChannel).rect = (the stage).rect
xx = myWidth / 2
yy = myHeight / 2
sprite (EmptySpriteChannel).loc = point (xx, yy)
sprite (EmptySpriteChannel).locZ = 2000
Когда клип продвинется к следующему кадру, он будет покрыт изображением кадра, который мы только что покинули. Это изображение, которое принимает маски и показывает опорный кадр за собой. Вот участок кода для интерпретации и применения маски из элемента перехода Lingo. Когда это будет выполнено, растр и спрайт, созданные в процессе, ликвидируются.
on executeWipe me
stepListCounter = stepListCounter + 1
if stepListCounter <= stepList.Count then
Trans_Mask.copyPixels (White_image, Trans_Mask.rect, White_image.rect, [#blendLevel: myblend, #maskimage: Alpha_trans.createMatte (stepList[stepListCounter])])
stageImage.image.setAlpha (Trans_Mask)
else
stageimage.erase ()
sprite (EmptySpriteChannel).member = VOID
puppetsprite EmptySpriteChannel, FALSE
end if
end
Пример клипа Вы можете загрузить исходный код Director 8.5 для примера клипа в форматах Windows или Mac. Он содержит готовый к применению порождающий скрипт и поведение (behavior). Поведение привлечено в канал скрипта и включает в себя возможности для выбора элемента перехода Lingo, установки параметров speed и blendLevel и переворота переходов. Еще одна способность - это возможность синхронизировать переходы со всем остальным. Это значит, что вы можете фактически анимировать находящееся за переходом. Получайте удовольствие!
Frank Di Luzio имеет титул BFA по фотографии от Рочестерского технологического института. С переходом фотографических спецэффектов, которыми он занимался, из темных фотолаботаторий на компьютер, он утвердился в своем интересе к электронным медиа-средствам. В настоящее время Frank является программистом в Director для DIA3 в Мюнхене, Германия. Родился в Испании, вырос в США, бегло общается на трех языках.
Перевод: ArtLogic Источник: director-online.com |
Использование материалов возможно только при ссылке на Graphics.ru Статьи, переводы и изображения принадлежат их авторам. c Graphics.ru 2001. Создание и поддержка ArtLogic. |