Небольшое дополнение к уроку Динамическая маска на ActionScript 3.0. Но на этот раз задача следующая: делаем такую динамическую маску , чтобы при стирании одной картинки проступала другая. Конечный результат должен выглядеть примерно так:
Итак, приступим.
На главной временной шкале создаём мувиклип container_mc. Внутри мувика container_mc создаём три слоя. На двух нижних слоях располагаем разные растровые картинки (в моём случае это image_1.png и image_2.png), а на верхнем слое создаём пустой мувиклип mask_mc (на самом деле, он не совсем пустой, но об этом чуть позже). Мувик mask_mc объявляем маской для ближайшего к нему изображения. Результат должен выглядеть примерно так:
Потом возвращаемся на главную временную шкалу и пишем код...
Код ActionScript 3.0:
var flag:Boolean = false;
container_mc.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDowns);
container_mc.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoves);
container_mc.addEventListener(MouseEvent.MOUSE_UP, onMouseUps);
function onMouseDowns(event:MouseEvent):void
{
flag = true;
}
function onMouseUps(event:MouseEvent):void
{
flag = false;
}
function onMouseMoves(event:MouseEvent):void
{
if (flag)
{
container_mc.mask_mc.graphics.beginFill(0x000000);
container_mc.mask_mc.graphics.drawCircle(mouseX, mouseY, 40);
container_mc.mask_mc.graphics.endFill();
}
}
Вдаваться в объяснения не буду, так как код полностью позаимствовал из урока Динамическая маска на ActionScript 3.0, в котором код объяснён построчно. Изменены только пути до мувиков.
Если всё сделали правильно, то результат будет примерно такой:
Единственный момент, на котором стоит заострить внимание: использование масок может порождать множество проблем и с ними надо быть очень аккуратными. Именно поэтому в мувик mask_mc пришлось добавить немного "мусора", чтобы маска работала правильно. Увы, такова реальность :-(
Если что-то непонятно, то вот исходник - скачать исходники (под Adobe Flash CS6).