La imagen es
www.eliseogroup.com.ar/agua
el codigo es
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
img = BitmapData.loadBitmap("imagen");
w = img.width-1;
h = img.height-1;
pt = new Point();
Nx = new Matrix();
Mx = new Matrix();
Mx.scale(2,2);
fz = 70;// fz: fuerza del oleaje de 0 en adelante;
v = (255/256)-1/100000;
sal = new BitmapData(w/2, h/2);
sal1 = sal2=new BitmapData(w, h);
ori = acum=new BitmapData(w/2, h/2, false, 128);
attachBitmap(sal2,0);
ola = new ConvolutionFilter(3, 3, [1, 1, 1, 1, 1, 1, 1, 1, 1], 9);
ade = new ColorTransform(0, 0, v, 1, 0, 0, 2, 0);
agua = new DisplacementMapFilter(sal2, pt, 4, 4, fz, fz);
onEnterFrame = function () {
pul = true;
clearInterval(ID);
ID = setInterval(onda, 10);
};
function onda() {
if (pul) {
cont = 0;
ori.setPixel(_xmouse/2,_ymouse/2,0);
agua.scaleY = agua.scaleX += 10*(agua.scaleX<(fz-10));
} else {
cont++;
if (cont>fz) {
agua.scaleY = agua.scaleX -= 5*(agua.scaleX>50)+.25;
}
}
sal.applyFilter(ori,new Rectangle(0, 0, w/2, h/2),pt,ola);
sal.draw(sal,Nx,null,"add");
sal.draw(acum,Nx,null,"difference");
sal.draw(sal,Nx,ade);
sal1.draw(sal,Mx,null,null,null,true);
sal2.applyFilter(img,new Rectangle(0, 0, w, h),pt,agua);
acum = ori;
ori = sal.clone();
if (agua.scaleX<=0) {
agua.scaleY = agua.scaleX=fz;
cont = 0;
clearInterval(ID);
}
}

