使用brush_mc,您可以刷过遮罩,在画笔笔划中将像素变为透明。 因此在视觉上它会擦除蒙版并且会出现蒙面动画片段。 如果面具完全变透明,我想跟踪。
是否可以在没有bitmapdata的情况下检查面具是否完全透明?
// this creates a mask that hides the movieclip on top
var mask_mc:MovieClip = new MovieClip();
addChild(mask_mc)
//assign the mask to the movieclip it should 'cover'
mc1.mask = mask_mc;
//add event listeners for the 'brush'
brush_mc.addEventListener(MouseEvent.MOUSE_DOWN,brushDown);
brush_mc.addEventListener(MouseEvent.MOUSE_UP,brushUp);
//function to drag the brush over the mask
function brushDown(dragging:MouseEvent):void{
dragging.currentTarget.startDrag();
MovieClip(dragging.currentTarget).addEventListener(Event.ENTER_FRAME,erase) ;
mask_mc.graphics.moveTo(brush_mc.x,brush_mc.y);
}
//function to stop dragging the brush over the mask
function brushUp(dragging:MouseEvent):void{
dragging.currentTarget.stopDrag();
MovieClip(dragging.currentTarget).removeEventListener(Event.ENTER_FRAME,erase);
}
//fill the mask with transparant pixels so the movieclip turns visible
function erase(e:Event):void{
with(mask_mc.graphics){
beginFill(0x000000);
drawRect(brush_mc.x,brush_mc.y,brush_mc.width,brush_mc.height);
endFill();
}
}
答案 0 :(得分:2)
转到here并查看比较功能 您需要做的是创建第二个与掩码大小相同但完全透明的0x00000000的bitmapdata对象。然后使用比较功能。正如文档所说。
如果BitmapData对象是等效的(具有相同的宽度,高度, 和相同的像素值),该方法返回数字0。
[编辑]
var myTestingBitmapData:BitmapData = new BitmapData(mask_mc.width, mask_mc.height, true, 0x00000000);
// this is untested code but you might have to comvert mask_mc to bitmapdata
trace( myTestingBitmapData.compare( mask_mc) )
答案 1 :(得分:0)
你可能可以实现某种形式的计数器来保持掩码状态的轨迹。
想法是在刷动作之前检查蒙版的状态。您有一个总像素数,然后根据像素的颜色从计数器中添加或减去。
当您的计数器达到某个值时,您的面具将被删除。
这不是一个理想的解决方案,因为你的面具可能看起来已被删除,但你仍然有一些随机像素使计数器保持在必要的值,所以你可能需要平均一点......是否用刷子动作或用计数器。