Comunidad de diseño web y desarrollo en internet online

comunicar 3 clases error

Citar            
MensajeEscrito el 06 Feb 2010 02:42 am
Hola!!!
Tengo un problemilla aqui:

Tengo una clase que controla los eventos de un MC/boton, al darle click este llama una funcion que esta declarada en otra clase, hasta ahi todo bien, pero al decirle al evento MouseEvent.CLICK que tambien llame otra funcion que esta declarada en una tercera clase, me da error al exportar : dice que es un evento forzoso.
es preciso tener esta funcion en una tercera clase.

esta es la clase del boton:

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();
       Todo(parent).Apagar();
   Secciones(parent).Cweb(); // ESTE ES EL PROBLEMA
     } 
   }  
}


Agradezco su colaboracion

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2010 02:19 pm
¿Evento forsozo? Pon el error tal cual sale

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Feb 2010 12:42 am
Hola jorgito:

Secciones(parent).Cweb(); // ESTE ES EL PROBLEMA

Me dice algo asi: NO SE PUEDE CONVERTIR LA CLASE TODO EN SECCIONES

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 03:48 am
Ayuda please!!! :wink: :wink:

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 04:00 am
Diana , Secciones es una clase distinta a la clase Todo , o bien la funcion Cweb no esta escrita en la clase Secciones, has un trace(parent) para que sepas que tipo de Dato estas tratando.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Feb 2010 04:06 am
La cosa es que en la funcion encima no me deja colocar referencias a dos clases externas distintas, y si coloco la funcion en la clase todo no me sirve porque me carga el MC dentro del Mc al que hace referencia la clase Todo

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 04:36 am
tal vez no es la mejor forma como lo estas haciendo , no te vendria mejor agregar el listener del click a una instancia de la clase Web y crear una clase cargadora la cual agregue o retorne el SWF cargado y lo metas en un contenedor asi tendrias en un nivel todo, por que dudo que funcione si usas el operado "as " y lo conviertas a la clase Todo.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 07 Feb 2010 04:40 am
PD: recuerda que no todo lo debes de hacer en una sola clase , asi rapido puedes crear una clase CustomBoton, Cargadora , Efectos .. Main o DocumentClass es la ventaja de OOP.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 07 Feb 2010 05:46 am
Pues me di cuenta que el EnterFrame no hacia falta
¿Por que? No se

asi quedo el code, pero me falta solucionar el problema de sacar el Loader del display list

Código ActionScript :

package clases{  
 
   import flash.display.MovieClip; 
   import flash.display.DisplayObjectContainer;
   import flash.events.Event; 
   import flash.filters.BlurFilter;
   import flash.net.URLRequest;
   import flash.display.Loader;
     
   public class Todo extends MovieClip { 
   
   public function Todo(){
   }
        
      function Desenfocar(){  
       var blur:BlurFilter = new BlurFilter(); 
       blur.blurX = 10;  
       blur.blurY = 10;  
       blur.quality = 5;  
       var filterArray:Array = new Array(blur);  
       this.filters = filterArray; 
      } 
    
    function Apagar(){
       this.mouseEnabled = false;
       this.enabled = false;
       this.mouseChildren = false;
    }
    
    //CARGAS
    function Cweb(){   
       var contenedor = new Loader();
      contenedor.load(new URLRequest("prueba.swf"));
      addChild(contenedor);
      } 
   }  
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 05:17 pm
tienes varias formas de solucionar eso , la mas rapida es no cargues y agregues a la misma clase o bien carga ahi y agregalo a un contenedor MovieClip o Sprite que no este en la clase, otra solucion que no estan prolija es cargua y agrega ahi y despues desde un nivel mas arriba quitas el SWF cargado cosa que no seria nada optimo.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Feb 2010 10:03 pm
cuando coloco el codigo asi:

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(); 
       Todo(parent).Apagar(); 
   Secciones(parent).Cweb(); // ESTE ES EL PROBLEMA 
     }  
   }   
}


este es el error que arroja:

Código ActionScript :

TypeError: Error #1034: Error de conversión forzada: no se puede convertir clases::Todo@10a0a061 en clases.Secciones.
   at clases::Web/encima()


Y si coloco el evento en la clase todo, no me sirve, porque igual lo que se carga sale desenfocado.
Es como si no se permitiera comunicar mas de dos clases a la vez

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2010 11:01 pm
tus clases son un enredo de cosas y poco utilizables , por ejemplo la clase Todo para que ser base de un DisplayObject como un MovieClip si lo único que hace es aplicar un efecto de blur , debes de tratar de evitar eso , yo la clase Todo no la extendiria de nada, simplemente le pondría métodos estáticos públicos que reciban como parámetro al objeto a aplicarle el efecto así evito tener esa liga con la clase y tratar a fuerzas un tipo de objeto.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Feb 2010 11:12 pm
Pues eso lo hago porque dentro del MC Todo esta justamente "todo" y necesito que al darle click a un boton "todo" se desenfoque y sus botones se apaguen para que un swf externo se cargue encima de "todo", pense que lo estaba haciendo de la forma mas organizada posible, pero si no es asi, me gustaria que me indicaras como deberia hacerlo

Te agradezco

Por dianita666

Claber

185 de clabLevel



 

firefox

 

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