更新似乎任何混合模式都会发生这种情况 - 不仅仅是擦除
我一直在为我在 Adobe AIR 中的一个游戏开发一个粗略的光照引擎,用纯 AS3 编写。它的工作原理是有一个屏幕大小的位图数据,并且在每一帧的开始它被设置为一个黑色透明矩形。在这一步中,可以从位图数据中减去一些东西,然后当它在屏幕上绘制时,这些区域会显得更亮。
设置好了,一切都很顺利。目前我正在处理来自光源的基本径向渐变,并且设置它非常容易
_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)。现在这几乎可以工作了,除了一个小问题。
如果您仔细观察,您将能够看到渐变周围有一条非常细的黑线,这非常令人沮丧。我不知道是什么原因造成的——我试着让渐变比圆圈更小,我试着让它变成线性的,试着让它变成不同的颜色。它不会在混合模式上发生ERASE
,据我所知,它也不会发生在非渐变上(仍在擦除)。
有什么建议么?