2011-09-06 73 views
2

使用brush_mc,您可以將其塗抹在遮罩上,使畫筆中的像素變爲透明。 因此,它視覺上擦除蒙版,並出現蒙面影片剪輯。 我想跟蹤,如果面具完全變成透明。AS3可以檢查面罩是否完全填充?

是否有可能檢查如果沒有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

我對As3很新,所以解釋可能有點偏離,但這是爲了讓我的自我更清楚。隨時糾正我 – Opoe

+0

你爲什麼不想使用bitmapdata? – grapefrukt

+0

@grapefrukt我想使用它,但我認爲如果可以只用蒙版來完成,它會更容易理解。但是,我嘗試了一些bitmapdata的東西,但無法讓它工作。如果您有任何建議,歡迎! – Opoe

回答

2

轉到here並看看比較功能。
你需要做的是創建第二個bitmapdata對象,它的大小與你的mask完全相同,但是全透明0x00000000。然後使用比較功能。正如文檔所說。

如果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)) 
+0

謝謝!非常有幫助,這是正確的分配一個bitmapdata這樣的面具, myBitmapData.draw(mask_mc); ? 現在它停留在0,所以沒有什麼不同。 – Opoe

+0

我添加了一個編輯到我的答案。它可能不適合你的情況,但至少你會得到如何測試的想法。如果跟蹤是0,那麼沒有區別。 –

0

您可能可以實現某種形式的計數器,以保持對掩碼狀態的跟蹤。

這個想法是檢查畫筆動作之前的蒙版狀態。您有一個像素的總數,然後根據像素的顏色添加或減去計數器。

當您的計數器達到一定值時,您的面具將被刪除。

這不是一個理想的解決方案,雖然你的面具可能看起來像已經被擦除,但你仍然有一些隨機像素,使計數器保持在必要的值,所以你可能不得不平均一點...無論是用刷子動作還是用櫃檯。