使用BitmapData实现掩码功能

时间:2013-08-13 20:00:15

标签: actionscript-3 actionscript bitmapdata

我有两个启用了透明度的BitmapData对象。一个是大红色方块,另一个是小蓝色圆圈。

例如,如果我将蓝色圆圈放在红色方块上。我想在红色方块的BitmapData中创建一个透明区域,其中模糊圆圈是。与面具的工作方式类似。

我尝试过使用getPixel32()操作,但速度非常慢(见下文)。还有其他方法可以做到这一点吗?感谢

for(var x:int = 0; x < circleBitmapData.width; x++){
   for(var y:int = 0; y < circleBitmapData.width; y++){
       if(circleBitmapData.getPixel32(x,y) != 0x00000000){
           squareBitmapData.setPixel(x,y,0x00000000);
        }
   }
}

编辑 - 我有一个可能的解决方案,但它并不理想。我可以合并两个位图,然后使用threshold方法将高于某个值的像素转换为透明。所以我可以将所有蓝色像素设置为透明。但是,我在透明区域周围得到一层薄薄的蓝色光环

1 个答案:

答案 0 :(得分:0)

查看bitmapData的阈值方法。它应该返回一个带有相交区域的bitmapData。有了它,您不必再获取和设置像素。此外,getPixel32应该有setPixel32:P