我想将包含透明区域的图片作为掩码应用于显示对象。 面具只显示面具有颜色的区域,但实际上显示对象仍然显示整个区域,所以我将位图转换为矢量图像,这是解决问题的方法,但是转换方法太可怕了。如何设置位图作为掩码
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