我有两个启用了透明度的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
方法将高于某个值的像素转换为透明。所以我可以将所有蓝色像素设置为透明。但是,我在透明区域周围得到一层薄薄的蓝色光环
答案 0 :(得分:0)
查看bitmapData的阈值方法。它应该返回一个带有相交区域的bitmapData。有了它,您不必再获取和设置像素。此外,getPixel32应该有setPixel32:P