0

透明度が有効になっている 2 つの BitmapData オブジェクトがあります。1 つは大きな赤い四角で、もう 1 つは小さな青い円です。

たとえば、青い円を赤い正方形の上に配置するとします。ぼかし円がある赤い四角の 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);
        }
   }
}

編集 - 考えられる解決策が 1 つありますが、理想的ではありません。2 つのビットマップを結合し、thresholdメソッドを使用して特定の値を超えるピクセルを透明にします。したがって、すべての青いピクセルを透明に設定できます。ただし、透明領域の周りに薄い青色のリングが表示されます

4

1 に答える 1

0

bitmapData のしきい値メソッドを確認してください。交差した領域を含む bitmapData が返されます。これにより、ピクセルを取得して設定する必要がなくなります。また、getPixel32 には setPixel32 :P が必要です。

于 2013-08-13T20:54:17.100 に答える