Foros del Web » Creando para Internet » Flash y Actionscript »

ayuda con efecto de agua

Estas en el tema de ayuda con efecto de agua en el foro de Flash y Actionscript en Foros del Web. hoa amigos estoy creando una serie de efectos en AS3 y me he topado con este problemilla que llevo algunas horas sin poder resolverlo aver ...
  #1 (permalink)  
Antiguo 17/01/2009, 12:05
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
ayuda con efecto de agua

hoa amigos estoy creando una serie de efectos en AS3 y me he topado con este problemilla que llevo algunas horas sin poder resolverlo aver si alguno lo logra XDXD 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 tengo esta funcion

Código PHP:
package cfx.Efectos{
    
import flash.events.*;
    
import flash.display.*;
    
import flash.filters.*;
    
import flash.geom.*;
    
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:DisplacementMapFilter;
        private var 
Bmp:Bitmap;
        private var 
Bmpx:Bitmap;
        private var 
twTime=0;
        private var 
twTimeTotal=0;
        private var 
twTimeCont=0;

        private var 
_Mc:MovieClip=new MovieClip();
        private var 
Imagen:BitmapData;
        private var 
ImagenTemp;
        private var 
_INT;
        public var 
func:Function = function (t:Numberb:Numberc:Numberd:Number):Number { return c*t/b; };
        public function 
FxAgua(ImagenBD:BitmapData ,INT:Number=1,McContenedor:MovieClip=null):void {
            
ImagenTemp=ImagenBD;
            
_INT=INT;

            if (
McContenedor is MovieClip) {
                
_Mc=McContenedor;
            }
            
addChild(_Mc);
            
Imagen=ImagenBD;
            
AnchoImagen.width;
            
Alto =Imagen.height;

            
FondoB = new BitmapData(Ancho,Altofalse,0);
            
FondoA= new BitmapData(Ancho,Alto);
            
PunOrig = new BitmapData(Ancho,Altofalse,128);
            
Contenedor = new BitmapData(Ancho,Altofalse,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);
            
Bmpx= new Bitmap(ImagenTemp);
            
_Mc.addChild(Bmp);
            
_Mc.addChildAt(Bmpx,0);

        }
        private function 
InicioEfect(event:Event) {
            
FondoA.applyFilter(PunOrig,new Rectangle(00Ancho,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();
            
Onda.scaleX=_INT;
            
Onda.scaleY=_INT;
        }
        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);
        }
        private function 
protoTween(event:Event):void {
            if (
twTimeCont>twTimeTotal) {
                
_Mc.removeEventListener(Event.ENTER_FRAME,protoTween);
                
twTimeCont=0;
                
reset()
            }
            
Bmp.alpha=func(twTimeCont,1,0-1,twTimeTotal);
            
twTimeCont++;
        }
        public function 
start() {
            
_Mc.addChildAt(Bmpx,0);
            
_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);
            
_Mc.addChildAt(Bmp,0);

        }
        public function 
point(X=NaN,Y=NaN) {
            
PuntoOnda(X,Y);
        }
        public function 
Fin(Tiempo,func) {
            
twTimeTotal=Tiempo;
            
_Mc.addEventListener(Event.ENTER_FRAME,protoTween);
        }
        public function 
increment(num:int) {
            
_INT=num;
        }
    }

y para activarla en el fla lo hago asi

Código PHP:
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)    
NuevoFXAgua.increment(mouseY/5)    
}
function 
re (e:Event){
    
NuevoFXAgua.reset()
}
function 
res (e:Event){
    
NuevoFXAgua.start() 
con lo que esta puesto funciona a medias la imagen vuelve a su estado el problema empieza si utilizo de nueve la función start la imagen empieza distorsionada aver si alguno lo puede resolver
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.