有人能解释一下在AS3中使用BlendMode.ERASE时如何避免看到线条吗?
这里有一个例子。我在舞台上绘制了一个黑色背景,然后在一个精灵上绘制了2个重叠的圆形,并尝试从背景中擦除它们。
var solidBitmapData = new BitmapData(550,400,true,0x000000);
var mySpriteLayer = new Sprite();
// Create black background.
mySpriteLayer.graphics.beginFill(0x000000);
mySpriteLayer.graphics.drawRect(0,0,550,400);
mySpriteLayer.graphics.endFill();
// Draw it to bitmap data.
solidBitmapData.draw(mySpriteLayer);
// Clear sprite.
mySpriteLayer.graphics.clear();
// Draw two circles
mySpriteLayer.graphics.beginFill(0xFF0000);
mySpriteLayer.graphics.drawCircle(200,200,50);
mySpriteLayer.graphics.endFill();
mySpriteLayer.graphics.beginFill(0xFF0000);
mySpriteLayer.graphics.drawCircle(250,200,50);
mySpriteLayer.graphics.endFill();
// Draw circles to bitmap with blend mode erase.
solidBitmapData.draw(mySpriteLayer,null,null,BlendMode.ERASE);
// Create bitmap and add to stage.
var solidBitmap = new Bitmap(solidBitmapData);
addChild(solidBitmap);
我在谈论圆中间的那些线条。看起来与线条样式有关,但我已经尝试将其设置为零以及alpha设置为0,但无法去掉这些线条。
有什么想法吗?
draw()
会将其转换为光栅图像,并使用BlendMode
也是同样的道理,因此我不明白再次转换为光栅图像是如何发挥作用的 :) 现在我明白了。 - divillysausages