所以我使用bitmap.bitmapData.draw(erase,null,null,“erase”);擦除具有名为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");
答案 0 :(得分:1)
这就是擦除绘制的工作原理。它根据在擦除模式下绘制的对象的alpha值擦除像素。当alpha高于0.5时,该像素将其alpha降至零。其他像素未触及。这是您使用擦除,然后模糊,然后再次使用擦除绘制时的体验。不,Flash不够聪明,无法进行擦除模糊,您可能必须自己动手。您可以尝试使用BlendMode.ERASE
绘制透明的BitmapData来进行模糊擦除,但我不希望它返回带有模糊擦除区域的模糊位图。