32 ビットの BitmapData でいくつかの fillRects を使用しようとしています (つまり、透明度 = true で、bg の色を FFFF00FF (不透明なマゼンタ) に設定します)。たとえば、次のように使用します。
fillRect(rect, 0xFF0000FF);
予想通り、これは不透明な青い四角形を描画しますが...
fillRect(rect, 0x550000FF);
これは半透明の青い長方形を描くはずですよね?しかし、代わりに、青が黒と混ざっているように、濃い青の四角形が得られます(ただし、背景はマゼンタです。覚えているので、青が下のマゼンタと混ざると思いますか?)。
色の値を 0x000000FF に設定すると、基になるマゼンタが 100% になるはずですが、代わりに黒が 100% になります。
BitmapData は 32 ビット ARGB で作成されているので、ここで何が問題なのだろうか?
これはデフォルトの AS3 の動作のようですか? 小さなテストクラスを作成した後、実際に説明したように動作します...
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Rectangle;
public class Main extends Sprite
{
public function Main()
{
stage.color = 0x000000;
var bd:BitmapData = new BitmapData(400, 300, true, 0xFFFF00FF);
var b:Bitmap = new Bitmap(bd);
addChild(b);
bd.fillRect(new Rectangle(0, 0, 200, 200), 0x000000FF);
}
}
}
fillRect で描画された四角形はマゼンタになると思われますが、明らかにステージの背景色になります。今私の質問は:
目的の効果を得る方法はありますか (fillRect アルファは、Flash ステージではなく、ビットマップデータの背景色に適用されます)。