Actionscript 3 删除鼠标位于其上的层

Actionscript 3 删除鼠标位于其上的层,actionscript-3,Actionscript 3,我有以下问题 我在舞台上添加了以下元素: homeBg = new HomeBg(); homeMask = new HomeDrawBg(); addChild(homeBg); addChild(homeMask); 我在文档的开头对它们进行了实例化。但我的问题如下。homeBg层是一个图像,homeMask层是同一个图像,但它有铅笔的外观。我想要的是,无论我在哪里移动鼠标,homemask层都应该被擦除,以便底层变得可见(仅在擦除掩码的地方)。那么,如果鼠标在遮罩层上,我如何告诉它擦除自

我有以下问题

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

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

我在文档的开头对它们进行了实例化。但我的问题如下。homeBg层是一个图像,homeMask层是同一个图像,但它有铅笔的外观。我想要的是,无论我在哪里移动鼠标,homemask层都应该被擦除,以便底层变得可见(仅在擦除掩码的地方)。那么,如果鼠标在遮罩层上,我如何告诉它擦除自身呢?

回答尝试2

可以使用显示对象的blendMode属性来实现这一点。下面是代码(已测试):

这里有几个重要的方面

首先,必须将要擦除的对象的blendMode设置为
blendMode.LAYER


其次(这也是我之前被欺骗的原因)你的橡皮擦,带有
BlendMode.ERASE
,一定是你想要擦除的对象的子对象。

看看下面的内容:

我想你误解了这个问题,或者我没有正确解释,我只想擦除我鼠标所在的部分,所以不是整个面具。比如说我的鼠标在哪里,我会生成一个半径为10px的椭圆。elipse链接到我的鼠标位置,所以我的elipse在哪里,那就是应该擦除遮罩的地方,只有elipse的大小。因此,只显示原始图像,它应该创建这样的效果,即在我的鼠标所在的位置对sketch图像进行着色,好的。这有点复杂。在修改我的答案之前,我必须建立一个测试,除非其他人先到那里!更准确的答案,经过测试和解释。测试后,它看起来很好,只有一件事不起作用,当我浏览图像时,它被很好地擦除了,但当鼠标离开被擦除的点时,它会返回到scetch图像。好的,这又是一件不同的事情。要使擦除保持不变(就像画笔,但需要擦除),需要创建一个位图层,并将其嵌入到将要绘制的homeMask中。这将是您的擦除层,鼠标将在其上绘制。尝试一下,如果遇到问题,请提出另一个问题。这是使用BlendMode.INVERT影响基本位图,但不能使用擦除,因为
指针\u mc
不是目标的子对象(并且永远不能是,因为目标是位图)。这就是我要找的是的,还有一个问题,tyvm,还有一个问题,与其在舞台上添加省略,还可以将它从小变大吗?所以它更像是一个边缘模糊的墨水滴?抱歉,我的问题很烦人,但我还不太熟悉bitmapdata。对不起,我不明白你的问题。
// 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;
}