更新これは、消去だけでなく、どのブレンドモードでも発生するようです
私は純粋な AS3 で書かれた Adobe AIR で私のゲーム用の粗い照明エンジンに取り組んできました。どのように動作するかというと、画面サイズのビットマップ データがあり、各フレームの開始時に黒い透明な長方形に設定されます。そのステップ中に、ビットマップ データから何かを差し引くことができ、それが画面に描画されると、それらの領域が明るく表示されます。
それを設定すると、すべてがスムーズに進みました。現在、光源からの基本的な放射状グラデーションをいじっていますが、その設定は非常に簡単でした
_circ.graphics.lineStyle();
_circ.graphics.beginGradientFill(GradientType.RADIAL, [0x000000, 0x000000], [.9, 0], [0, 255]);
_circ.graphics.drawCircle(0, 0, 100);
_circ.graphics.endFill()
次に、それをビットマップ データに描画 (つまり、アンチドロー) するには、これを行うだけです。
FP.matrix.identity();
FP.matrix.tx = x + 30;
FP.matrix.ty = y + 5;
WorldGame.darkBit.draw(_circ, FP.matrix, null, BlendMode.ERASE, null, true);
FP.matrix.identity();
FP.matrix
単なる一般的なグローバル マトリックスです (私は Flashpunk を使用しています)。これで、1 つの小さな問題を除いて、これはほとんど機能します。
よく見ると、グラデーションの周りに非常に細い黒い線が見えますが、これは非常にイライラします。何が原因なのかわかりません-グラデーションを円よりも小さくしようとしました、線形にしようとしました、別の色にしようとしました. ブレンドモード以外では発生しません。またERASE
、私が知る限り、非グラデーションでも発生しません(まだ消去中です)。
助言がありますか?