1

更新これは、消去だけでなく、どのブレンドモードでも発生するようです

私は純粋な AS3 で書かれた Adob​​e 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、私が知る限り、非グラデーションでも発生しません(まだ消去中です)。

助言がありますか?

4

1 に答える 1

1

フラッシュ AS3 で BlendMode の「消去」を使用すると奇妙な動作が発生する

どういうわけか、以前の検索でこれを見逃していました。適切なキーワードを使用していなかったと思います。解決策は、「消しゴム」として使用されているスプライトでビットマップ キャッシュを true に設定することです。例えば:

_circ.cacheAsBitmap = true;

それだけです。

于 2012-11-23T10:23:21.033 に答える