AS3 стирает растровое изображение с фильтрами

Поэтому я использую 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");

person user2407621    schedule 02.08.2013    source источник


Ответы (1)


Просто так работает стирание. Он стирает пиксели на основе альфа-значения объекта, рисуемого в режиме стирания. Если альфа выше 0,5, альфа этого пикселя снижается до нуля. Остальные пиксели не трогаем. Это то, что вы испытываете, когда рисуете со стиранием, затем размываете, а затем снова рисуете со стиранием. Нет, Flash недостаточно умен, чтобы выполнять стирание и размытие, возможно, вам придется сделать это самостоятельно. Вы можете попробовать нарисовать прозрачный BitmapData с помощью BlendMode.ERASE, чтобы выполнить стирание размытия, но я не ожидаю, что он вернет размытое растровое изображение с размытыми стертыми областями.

person Vesper    schedule 03.08.2013