Когда вы применяете фильтр непосредственно к растровым данным, вы не можете удалить его, потому что фильтр определенно изменяет цвет пикселя, однако вы можете попытаться восстановить его, выполнив обратную операцию:
var matrix:Array = [1/n,1/n,1/n,0,0,
1/n,1/n,1/n,0,0,
1/n,1/n,1/n,0,0,
0,0,0,1,0];
Если вы хотите бытьЧтобы динамически удалять фильтры, вы должны применять их к объекту Bitmap, а не к объекту BitmapData.Затем вы можете сделать _bitmap.filters = [];
, чтобы удалить все фильтры
Вот пример, показывающий, как удалить фильтр через 4 секунды:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.filters.ColorMatrixFilter;
import flash.utils.setTimeout;
public class TestTextfield extends Sprite
{
public function TestTextfield()
{
var bd1 : BitmapData = new BitmapData(300,300);
var randomNum:Number = Math.floor(Math.random() * 10);
bd1.perlinNoise(100, 80, 6, randomNum, false, true, 1, true, null);
var n:Number = 1/3;
var matrix:Array = [n,n,n,0,0,
n,1,n,0,0,
n,1,n,0,0,
0,0,0,1,0];
var cmf:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var bitmap : Bitmap = new Bitmap(bd1);
bitmap.filters = [cmf];
addChild(bitmap);
setTimeout(function():void{
bitmap.filters = [];
}, 4000);
}
}
}