我想將包含透明區域的圖片作爲掩碼應用於顯示對象。 面具只顯示面具有顏色的區域,但實際上顯示對象仍然顯示整個區域,所以我將位圖轉換爲矢量圖像,這是解決問題的方法,但是轉換方法太可怕了。如何設置位圖作爲掩碼
public static function createVectorImage(bd:BitmapData,colorKey:uint = 0):Shape{
if(bd==null){
return null;
}
var sh:Shape = new Shape();
var g:Graphics = sh.graphics;
g.beginBitmapFill(bd);
var beginPixel:int = -1;
var i:int,il:int,j:int,jl:int;
var value:uint;
for(i = 0,il=bd.height;i<il;i++){
for(j = 0,jl = bd.width;j<jl;j++){
value = bd.getPixel32(j,i);
if(value!=colorKey&&beginPixel==-1){
beginPixel = j;
}else if(value==colorKey&&beginPixel!=-1){
//draw rect
g.drawRect(beginPixel,i,j-beginPixel,1);
beginPixel = -1;
}
}
if(beginPixel!=-1){
g.drawRect(beginPixel,i,j-beginPixel,1);
beginPixel = -1
}
}
g.endFill();
return sh;
}
有沒有比這更好的方法?
我已經嘗試過這種方式,但我失敗了,因爲我沒加罩的顯示列表addChild(mask),使事情不同 – Max