стирание слоя, где мышь находится над ним - PullRequest
0 голосов
/ 18 июля 2011

Я получил следующий вопрос.

я добавил на сцену следующие элементы:

homeBg = new HomeBg();
homeMask = new HomeDrawBg();
addChild(homeBg);
addChild(homeMask);

Я уже создал их в начале документа.Но моя проблема заключается в следующем.слой homeBg - это изображение, слой homeMask - это то же изображение, но оно выглядит как карандашный рисунок.Чего я хочу, так это того, чтобы при перемещении мыши слой домашней маски стирался, чтобы нижний слой становился видимым (только там, где маска удалена).Итак, как я могу сказать маске слой стереть себя, если мышь находится над ним?

Ответы [ 2 ]

0 голосов
/ 18 июля 2011
0 голосов
/ 18 июля 2011

попытка ответа 2

Для этого можно использовать свойство blendMode экранного объекта.Вот код (проверено):

// set the eraser width (diameter)
var eraserWidth:int = 20;

//get the HomeMask library item
var homeMask:HomeMask = new HomeDrawBg();
homeMask.blendMode = BlendMode.LAYER;
addChild(homeMask);

// create the eraser shape
var eraser:Shape = new Shape();
eraser.graphics.beginFill(0x000000);
eraser.graphics.drawCircle(0,0,eraserWidth/2);
eraser.blendMode = BlendMode.ERASE;
homeMask.addChild(eraser);

homeMask.addEventListener(MouseEvent.MOUSE_MOVE,mouseOverMask);

function mouseOverMask(evt:MouseEvent):void
{
    eraser.x = homeMask.mouseX;
    eraser.y = homeMask.mouseY;
}

Здесь есть пара важных битов.

Во-первых, вы должны установить для blendMode того, что вы хотите стереть, значение BlendMode.LAYER.

Во-вторых (и это меня обмануло раньше), ваш ластик, с помощью BlendMode.ERASE,должно быть потомком объекта, который вы хотите стереть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...