我得到了以下问题。
我在舞台上添加了以下元素:
homeBg = new HomeBg();
homeMask = new HomeDrawBg();
addChild(homeBg);
addChild(homeMask);
我已经在文档的开头实例化了它们。但我的问题如下。 homeBg图层是一个图像,homeMask图层是相同的图像,但它具有铅笔scetch外观。我想要的是,无论我在哪里移动鼠标,都应该擦除主屏幕层,以便底层变得可见(仅在擦除掩码的地方)。那么如果鼠标悬停在屏幕层之上,怎么能告诉掩码图层呢?
答案 0 :(得分:0)
回答尝试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
必须是你想要擦除的对象的孩子。
答案 1 :(得分:0)