擦除鼠标悬停在其上的图层

时间:2011-07-18 09:30:15

标签: actionscript-3

我得到了以下问题。

我在舞台上添加了以下元素:

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

我已经在文档的开头实例化了它们。但我的问题如下。 homeBg图层是一个图像,homeMask图层是相同的图像,但它具有铅笔scetch外观。我想要的是,无论我在哪里移动鼠标,都应该擦除主屏幕层,以便底层变得可见(仅在擦除掩码的地方)。那么如果鼠标悬停在屏幕层之上,怎么能告诉掩码图层呢?

2 个答案:

答案 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)