hoa amigos estoy creando una serie de efectos en AS3 y me he topado con este problemilla que llevo algunas horas sin poder resolverlo veréis se trata de un efecto de agua al iniciar funciona perfectamente el problema esta es que quiero añadir una función de de reinicio pero no he conseguido que la imagen vuelva a su estado original en el archivo as tego esta funcion

Código :

package cfx.Efectos{
   import flash.events.*;
   import flash.display.*;
   import flash.filters.*;
   import flash.geom.*;
   import flash.utils.*;
   import flash.net.*;
   import fl.transitions.Tween;
   import fl.transitions.easing.*;
   import cfx.CfxEvent.*;
   public class FxAgua extends MovieClip {
      private var Ancho:Number;
      private var Alto:Number;
      private var FondoA;
      private var FondoB;
      private var PunOrig;
      private var Contenedor;
      private var Ola;
      private var Agua;
      private var Onda;
      private var Bmp:Bitmap;
      private var _Mc:MovieClip=new MovieClip();
      private var Imagen:BitmapData;
      private var ImagenTemp;
      private var _INT
      public function FxAgua(ImagenBD:BitmapData ,INT:Number=1,McContenedor:MovieClip=null):void {
         
         _INT=INT
         
         if (McContenedor is MovieClip) {
            _Mc=McContenedor;
         }
         addChild(_Mc);
         Imagen=ImagenBD;
         Ancho= Imagen.width;
         Alto =Imagen.height;
         ImagenTemp=new BitmapData(Ancho,Alto, false,0)
         ImagenTemp.draw(ImagenBD);
         FondoB = new BitmapData(Ancho,Alto, false,0);
         FondoA= new BitmapData(Ancho,Alto);
         PunOrig = new BitmapData(Ancho,Alto, false,128);
         Contenedor = new BitmapData(Ancho,Alto, false,128);
         Ola = new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);
         Agua = new ColorTransform(0,0,0.996,1,0,0,2,0);
         Onda = new DisplacementMapFilter(FondoA,new Point(),4,4,INT,INT,"ignore");
         Bmp= new Bitmap(FondoB);
         _Mc.addChild(Bmp);

      }
      private function InicioEfect(event:Event) {
         FondoA.applyFilter(PunOrig,new Rectangle(0, 0, Ancho,Alto),new Point(),Ola);
         FondoA.draw(FondoA,new Matrix(),null,"add");
         FondoA.draw(Contenedor,new Matrix(),null, "subtract");
         FondoA.draw(FondoA, new Matrix(),Agua);
         FondoB.applyFilter(Imagen,new Rectangle(0,0,Ancho,Alto), new Point(),Onda);
         Contenedor = PunOrig;
         PunOrig = FondoA.clone();
      }
      private function PuntoOnda(PX=NaN,PY=NaN):void {
         var XM = PX;
         var YM = PY;
         PunOrig.setPixel(XM+1,YM,0);
         PunOrig.setPixel(XM-1,YM,0);
         PunOrig.setPixel(XM,YM+1,0);
         PunOrig.setPixel(XM,YM-1,0);
         PunOrig.setPixel(XM+1,YM+1,0);
         PunOrig.setPixel(XM-1,YM-1,0);
      }
      public function start() {

         _Mc.addEventListener(Event.ENTER_FRAME,InicioEfect);
         point();
      }
      public function Stop() {
         _Mc.removeEventListener(Event.ENTER_FRAME,InicioEfect);
      }
      public function reset() {
         _Mc.removeEventListener(Event.ENTER_FRAME,InicioEfect);
         // aui tengo el problema que no puedo resolver
         Imagen=ImagenTemp
         
         
      }
      public function point(X=NaN,Y=NaN) {
         PuntoOnda(X,Y);
      }
      /*public function efecto(tiemp,trancicion) {
      PuntoOnda(X,Y);
      }*/
   }
}

y para activarla en el fla lo hago asi


Código :

import cfx.Efectos.*

var MiBitmapData:BitmapData=new BitmapData(imagen.width,imagen.height,true,0)
MiBitmapData.draw(imagen)

   
var NuevoFXAgua=new FxAgua(MiBitmapData ,20,null)
addChild(NuevoFXAgua);

NuevoFXAgua.start()
addEventListener(MouseEvent.MOUSE_MOVE,hh)
addEventListener(MouseEvent.MOUSE_DOWN,re)
addEventListener(MouseEvent.MOUSE_UP,res)
function hh(e:Event){
NuevoFXAgua.point(mouseX,mouseY)   
}
function re (e:Event){
   NuevoFXAgua.reset()
}
function res (e:Event){
   NuevoFXAgua.start()
}


alguna sugerencia bienvenida sea XDXD