AS3擦除具有过滤器的位图

时间:2013-08-02 21:12:42

标签: actionscript-3 bitmap sprite erase

所以我使用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");

1 个答案:

答案 0 :(得分:1)

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