0

所以我使用 bitmap.bitmapData.draw(erase,null,null,"erase"); 擦除具有称为擦除的精灵的位图的一部分。问题是我需要模糊位图,并且在应用模糊过滤器后,bitmapData.draw 函数不再起作用。意味着绝对没有任何事情发生。我尝试使用 bitmapdata.applyFilter,它几乎可以正常工作,除非我在模糊边缘附近擦除它“取消模糊”本身。

        var erase:Sprite=new Sprite();
        erase.cacheAsBitmap = true;
        var blur:BlurFilter = new BlurFilter(10,10,10);
        var blurs:Array=new Array();
        blurs.push(blur);
        bitmap=new Bitmap(bitmapdata);
        bitmap.blendMode = "layer";
        bitmap.y=-10;
        bitmap.x=-10;
        Refs._stage.addChildAt(bitmap,0);

还:

                erase.graphics.beginFill(0xFF0000);
                erase.graphics.drawCircle(stage.mouseX+10,stage.mouseY+10,35);
                erase.filters = blurs;
                erase.graphics.endFill();
                bitmap.bitmapData.draw(erase,null,null,"erase");
4

1 回答 1

1

这就是擦除绘制的工作原理。它根据在擦除模式下绘制的对象的 alpha 值擦除像素。在 alpha 高于 0.5 的地方,该像素的 alpha 降至零。其他像素未触及。这就是您使用擦除绘制,然后模糊,然后再次使用擦除绘制时所经历的。不,Flash 不够智能,无法进行擦除模糊,您可能必须自己做。您可以尝试绘制一个透明的 BitmapDataBlendMode.ERASE来进行模糊擦除,但我不希望它返回带有模糊擦除区域的模糊位图。

于 2013-08-03T03:02:06.813 回答