
Код AS3:
public class Main extends Sprite
{
private var bmd:BitmapData = new BitmapData(400, 200, true, 0xFF8080C0);
private var brush:Sprite = new Sprite();
private var brushContainer:Sprite = new Sprite();
private var filter:ColorMatrixFilter = new ColorMatrixFilter(
[ 1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, -1, 255]);
public function Main():void
{
var r:Number = 20;
brush.graphics.beginFill(0xFFFFFF);
/*//а можно и с 'мягкими' краями
var mtrx:Matrix = new Matrix();
mtrx.createGradientBox(2 * r, 2 * r, 0, -r, -r);
brush.graphics.beginGradientFill(GradientType.RADIAL, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [1, 1, 0], [0, 0xCC, 0xFF], mtrx);
*/
brush.graphics.drawCircle(0, 0, r);
addChild(new Bitmap(bmd));
brushContainer.addChild(brush);
addChild(brushContainer);
stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
}
private function stage_mouseMove(e:MouseEvent):void
{
brush.x = mouseX;
brush.y = mouseY;
var maskBmd:BitmapData = new BitmapData(400, 200, true, 0x0);
maskBmd.draw(brushContainer);
maskBmd.applyFilter(maskBmd, maskBmd.rect, new Point, filter);
bmd.copyPixels(bmd, bmd.rect, new Point() , maskBmd, new Point());
}
}