El efecto utiliza filtros de Bitmap, así que para que funcione con un MovieClip basta con dibujarlo en un BitmapData:
Código ActionScript :
var mc1:Mc1 = new Mc1();
var fondo:BitmapData = new BitmapData(mc1.width, mc1.height);
fondo.draw(mc1);
var w:int = fondo.width;
var h:int = fondo.height;
var Pt:Point = new Point();
var sal:BitmapData = new BitmapData(w / 2,h / 2);
var sal1:BitmapData;
var sal2:BitmapData;
sal1 = sal2 = new BitmapData(w,h);
var ori:BitmapData;
var acum:BitmapData;
ori = acum = new BitmapData(w / 2,h / 2,false,128);
addChild(new Bitmap(sal2));
var Nx:Matrix = new Matrix();
var Mx:Matrix = new Matrix();
Mx.scale(2, 2);
var ola:ConvolutionFilter = new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);
var ade:ColorTransform = new ColorTransform(0,0,0.996,1,0,0,2,0);
var agua:DisplacementMapFilter = new DisplacementMapFilter(sal2,Pt,4,4,48,48,"ignore");
var oldX:Number;
var oldY:Number;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(e:Event):void
{
if ((oldX != mouseX) || (oldY != mouseY))
{
ori.setPixel(mouseX / 2, mouseY / 2, 0);
}
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(fondo, new Rectangle(0, 0, w, h), Pt, agua);
acum = ori;
ori = sal.clone();
oldX = mouseX;
oldY = mouseY;
}Ahora bien, esto sólo es válido si tu MovieClip no tiene ninguna animación, ya que al llamar al método draw se dibuja sólo el primer fotograma del MC.
Si tienes un MC animado, tendrás que llamar a draw dentro del callback de EnterFrame para que se vaya dibujando cada fotograma del MC, aunque haciendo esto el rendimiento bajará considerablemente (vamos, que si tu clip no tiene ninguna animación debes usar el primer código):
Código ActionScript :
var mc1:Mc1 = new Mc1();
var fondo:BitmapData = new BitmapData(mc1.width, mc1.height);
var w:int = fondo.width;
var h:int = fondo.height;
var Pt:Point = new Point();
var sal:BitmapData = new BitmapData(w / 2,h / 2);
var sal1:BitmapData;
var sal2:BitmapData;
sal1 = sal2 = new BitmapData(w,h);
var ori:BitmapData;
var acum:BitmapData;
ori = acum = new BitmapData(w / 2,h / 2,false,128);
addChild(new Bitmap(sal2));
var Nx:Matrix = new Matrix();
var Mx:Matrix = new Matrix();
Mx.scale(2, 2);
var ola:ConvolutionFilter = new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);
var ade:ColorTransform = new ColorTransform(0,0,0.996,1,0,0,2,0);
var agua:DisplacementMapFilter = new DisplacementMapFilter(sal2,Pt,4,4,48,48,"ignore");
var oldX:Number;
var oldY:Number;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(e:Event):void
{
if ((oldX != mouseX) || (oldY != mouseY))
{
ori.setPixel(mouseX / 2, mouseY / 2, 0);
}
fondo.draw(mc1);
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(fondo, new Rectangle(0, 0, w, h), Pt, agua);
acum = ori;
ori = sal.clone();
oldX = mouseX;
oldY = mouseY;
}