L'image :



Le code :
Stage.scaleMode = "noScale";
Stage.align = "";
/////////////////
import flash.display.*;
import flash.geom.*;
import flash.filters.BlurFilter;
import flash.filters.DisplacementMapFilter;
///////
cam = Camera.get();
vid.attachVideo(cam);
///////
xDeplac = 0;
yDeplac = 0;
///////
now = new BitmapData(cam.width, cam.height);
before = new BitmapData(cam.width, cam.height);
rect = new Rectangle(0, 0, cam.width, cam.height);
pt = new Point(0, 0);
/////////
_onEnterFrame = function () {
if (!cam.muted) {
now.draw(vid);
now.draw(before, new Matrix(), new ColorTransform(), 'difference');
now.threshold(now, rect, pt, '>', 0xff111111, 0xffFF9900);
before.draw(vid);
////////////////////
xDeplac += 5;
yDeplac += 16;
pt2 = new flash.geom.Point(xDeplac, yDeplac);
bitmapData.perlinNoise(15, 40, 1, 10, false, true, 8, true, pt2);
creaDisplacementMap();
}
};
inter = setInterval(this, "_onEnterFrame", 50);
///////////////
function creaDisplacementMap():Void {
var filter:DisplacementMapFilter = new DisplacementMapFilter(bitmapData, new Point(0, 0), 1, 1, 50, 15, "clamp");
mc.filters = [blur, filter];
mc2.filters = [blur, filter];
}
////////////////////////////////
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(now, 10);
mc.blendMode = 4;
var blur:BlurFilter = new BlurFilter(5, 30);
mc._xscale = mc._yscale=200;
/////////
var bitmapData:BitmapData = new BitmapData((cam.width*2)+50, (cam.height*2)+50, false, 0x000000FF);
var clip:MovieClip = this.createEmptyMovieClip("clip", this.getNextHighestDepth());
clip.attachBitmap(bitmapData, this.getNextHighestDepth());
clip._visible = false;
var mc2:MovieClip = this.createEmptyMovieClip("mc2", this.getNextHighestDepth());
mc2.attachBitmap(now, 20);
mc2.blendMode = 4;
mc2._xscale = mc2._yscale=200;