Comunidad de diseño web y desarrollo en internet online

Desenfoque Progresivo

Citar            
MensajeEscrito el 04 Feb 2010 01:24 pm
Hola!!

Tengo un Mc que funciona como boton y todas sus acciones estan en una clase (MouseOver, MouseOut)
quiero crear una funcion que al darle CLICK a este "boton" otro MC que esta en el escenario se desenfoque progresivamente.

¿Debe tener su propia clase el MC a desenfocar ?
SI hay dos clases ¿Como las vinculo?

Gracias amigos

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 02:03 pm
Puedes hacerlo den dos clases, ya tienes una, te falta la otra, luego dado que trabajas con instancias, utilizarás elnombre de instancia para referenciarla

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 02:45 pm
gracias Jorge, pero podrias darme un ejemplo porfa

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 02:52 pm
Supongamos que el clip con el método de desenfoque se llama "cuad", y la clase tiene un método desenfoque. Lo primero es ver que posición tienen ambos en el DisplayList (y deben estar para poder hablar entre si) Lo ideal es que la clase principal sea Document Class, en ese caso simplemente haces:

cuad.desenfoque()

Si ambas están al mismo nivel ya se rompe la encapsulación y es un tema de diseño de las vistas, pero seguramente tu caso no es tan complicado y simplemente podrías hacer

MovieClip(parent.cuad).desenfoque()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:07 pm
y la clase que hace el desenfoque animado como seria?

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:10 pm
y la clase que hace el desenfoque animado como seria?

esa es mi principal duda

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:13 pm
Ok, un desenfoque simple en AS3 (sobre un rect{angulo rojo)

Código ActionScript :

var squareDrawing:MovieClip = new MovieClip();
this.addChild(squareDrawing);
squareDrawing.graphics.lineStyle(1, 0x000000, 1);
squareDrawing.graphics.beginFill(0xFF0000)
squareDrawing.graphics.drawRect (100, 100, 100, 200);
squareDrawing.graphics.endFill();
var blur:BlurFilter = new BlurFilter();
blur.blurX = 10;
blur.blurY = 10;
blur.quality = 1;
var filterArray:Array = new Array(blur);
squareDrawing.filters = filterArray;


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:25 pm
Jorge:

desenfoque el mc con esta clase:

Código ActionScript :

package clases{ 

   import flash.display.MovieClip; 
   import flash.events.Event;
   import flash.filters.BlurFilter;
    
   public class Todo extends MovieClip { 
       
      public function Todo(){  
         addEventListener(Event.ENTER_FRAME,cambio); 
      } 
       
      private function cambio(event:Event):void{ 
       var blur:BlurFilter = new BlurFilter();
       blur.blurX = 10; 
       blur.blurY = 10; 
       blur.quality = 1; 
        var filterArray:Array = new Array(blur); 
        this.filters = filterArray;
      } 
   } 
}


ahora como vinculo esta accion de desenfoque a esta otra clase que es el boton que la activa:

Código ActionScript :

package clases{ 

   import flash.display.MovieClip; 
   import flash.events.Event;
   import flash.events.MouseEvent;
    
   public class Web extends MovieClip { 
       
      public function Web(){  
         stop();
         addEventListener(MouseEvent.MOUSE_OVER,si); 
       addEventListener(MouseEvent.MOUSE_OUT,no);
       //addEventListener(MouseEvent.CLICK,encima);
      } 
       
      private function si(evt:MouseEvent):void{ 
       (evt.target).gotoAndStop(2);
      } 
     private function no(evt:MouseEvent):void{ 
       (evt.target).gotoAndStop(1);
      } 
   } 
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:30 pm
Lo primero: Web y Todo deben estar en el displayList, ya sea porque las pusiste manualmente en el escenario o porque hiciste un addChild
Lo segundo: la clase Web tiene que tener nombre de instancia, por ejemplo "target"
Tercero: No arranques el desenfoque en el constructor porque se iniciará ni bien se instancie, cambiale el nombre a desenfoque y haz en la clase Web

Código ActionScript :

private function si(evt:MouseEvent){
  MovieClip(parent.target).desenfoque()
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:38 pm
Me da este error en Web:

Código ActionScript :

1119: Acceso a una propiedad Todo posiblemente no definida mediante una referencia con tipo estático flash.display:DisplayObjectContainer.

porque coloque esto:

Código ActionScript :

private function encima (evt:MouseEvent):void{
        MovieClip(parent.todo_mc).desenfoque();
     }


¿Vomo hago para no arrancar el desenfoque en el constructor?

Gracias Jorge

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 03:41 pm
En vez de

public function Todo(){

Pon

public function desenfoque(){

El cast lo puedes hacer a la clase

Todo(parent.todo_mc).desenfoque()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 08:17 pm
De esta forma el desenfoque ocurre de un momento a otro
¿Como hago para que el filtro Blur sea progresivo- animado?

Código ActionScript :

package clases{  
 
   import flash.display.MovieClip;  
   import flash.events.Event; 
   import flash.filters.BlurFilter; 
     
   public class Todo extends MovieClip {  
        
      public function Desenfocar(){   
         addEventListener(Event.ENTER_FRAME,cambio);  
      }  
        
       private function cambio(event:Event):void{  
       var blur:BlurFilter = new BlurFilter(); 
       blur.blurX = 10;  
       blur.blurY = 10;  
       blur.quality = 5;  
       var filterArray:Array = new Array(blur);  
       this.filters = filterArray; 
      }  
   }  
} 

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 08:21 pm
Tienes que ir cambiando los parámetros (blurX, blurY y quality) progresivamente y quizás no tan rápido como en un onEnterFrame. Posiblemente tres variables y un Timer de un segundo creen la ilusión

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2010 08:29 pm
Gracias Solisarg,
pero podrias darme todo masticado?
es que aun soy novata en AS3
Gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 09:10 pm
para que no te metas en enterFrames y Timer,usa la clase Tween y ya.

Código ActionScript :

package clases
{
   import flash.display.MovieClip;
   import flash.filters.BlurFilter;
   import fl.transitions.Tween;
   import fl.transitions.easing.*;
   
   public class Todo extends MovieClip
   {
      private var _filter:BlurFilter;
      private var _tweenBX:Tween;
      private var _tweenBY:Tween;
      
      public function Todo()
      {
         //empty
      }
      
      public function aplicarBlur():void
      {
         _filter = new BlurFilter();
         _filter.quality = 5;
         _tweenBX = new Tween(filter,"blurX",Regular.easeInOut,0,10,3,true);
         _tweenBY = new Tween(filter,"blurY",Regular.easeInOut,0,10,3,true);
         this.filters = [_filter];
      }
   }
}


si no entiendes el codigo abre flash y presion f1.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 04 Feb 2010 09:32 pm
me falto poner el "_" a la variable _filter cuando instancio el objeto Tween, quedaria asi :

Código ActionScript :

public function aplicarBlur():void
      {
         _filter = new BlurFilter();
         _filter.quality = 5;
         _tweenBX = new Tween(_filter,"blurX",Regular.easeInOut,0,10,3,true);
         _tweenBY = new Tween(_filter,"blurY",Regular.easeInOut,0,10,3,true);
         this.filters = [_filter];
      }


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 04 Feb 2010 09:40 pm
Pues me da muchos errores

la cosa es que La clase todo contiene un evento que debe ser accionado al darle CLICK al MC Web

esta es la clase Todo:

Código ActionScript :

package clases{  
 
   import flash.display.MovieClip;  
   import flash.events.Event; 
   import flash.filters.BlurFilter; 
     
   public class Todo extends MovieClip {  
        
      public function Desenfocar(){   
         addEventListener(Event.ENTER_FRAME,cambio);  
      }  
        
       private function cambio(event:Event):void{  
       var blur:BlurFilter = new BlurFilter(); 
       blur.blurX = 10;  
       blur.blurY = 10;  
       blur.quality = 5;  
       var filterArray:Array = new Array(blur);  
       this.filters = filterArray; 
      }  
   }  
}


Y esta es la clase del MC Web:

Código ActionScript :

package clases{  
 
   import flash.display.MovieClip;  
   import flash.events.Event; 
   import flash.events.MouseEvent; 
     
   public class Web extends MovieClip { 
        
      public function Web(){   
       stop();
       addEventListener(MouseEvent.MOUSE_OVER,si);  
       addEventListener(MouseEvent.MOUSE_OUT,no); 
       addEventListener(MouseEvent.CLICK,encima); 
      }  
        
      private function si(event:MouseEvent):void{  
       gotoAndStop(2); 
      } 
     
     private function no(event:MouseEvent):void{  
       gotoAndStop(1); 
      } 
     
     private function encima (event:MouseEvent):void{ 
       Todo(parent).Desenfocar(); 
     } 
   }  
} 


el MC ya funciona como debe, lo que me falta es que el Blur sea animado, con la misma logica de programacion, porque o si no me da error en Web

Gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 09:50 pm
no se puede ser tan asii agrrgg :si usas la clase que te puse solo tendrias que hacer :

Código ActionScript :

private function encima (event:MouseEvent):void{  
       Todo(parent).aplicarBlur();  
     } 


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 04 Feb 2010 10:01 pm
Nada sucede al darle click

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2010 10:32 pm
ya probaste poniendo la funcion asi :

Código ActionScript :

public function aplicarBlur():void
      {
         _filter = new BlurFilter();
         _filter.quality = 5;
         this.filters = [_filter];
         _tweenBX = new Tween(_filter,"blurX",Regular.easeInOut,1,10,3,true);
         _tweenBY = new Tween(_filter,"blurY",Regular.easeInOut,1,10,3,true);
         
      }


acabo de armar todo y funciono.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 04 Feb 2010 10:42 pm
Funciona pero quedo como la principio, desenfoca de un momento a otro y no anima el filtro

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Feb 2010 12:57 am
que pase de 1 a 10 la propiedad blurX , blurY , es una cosa nada , pruba pasandole mas segundos a la animacion.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 05 Feb 2010 02:07 am
o tambien pudes probar con el enterFrame :

Código ActionScript :

package clases
{
   import flash.display.MovieClip;
   import flash.events.Event
   import flash.filters.BlurFilter;
   
   public class Todo extends MovieClip
   {
      private var _filter:BlurFilter;
      
      public function Todo()
      {
         //empty
      }
      
      public function aplicarBlur():void
      {
         _filter = new BlurFilter();
         addEventListener(Event.ENTER_FRAME, enterFrameHandler);
      }
      
      private function enterFrameHandler(e:Event):void
      {
         if(_filter.blurX <= 10)
         {
            _filter.blurX = _filter.blurY += .1;
            this.filters = [_filter];
         }else {
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
         }
         
      }
   }
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 05 Feb 2010 10:21 pm
nada, no anima

Por dianita666

Claber

185 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.