Comunidad de diseño web y desarrollo en internet online

Información entre carga de imagenes y herencia

Citar            
MensajeEscrito el 20 Sep 2012 06:33 pm
Estimados

Tengo una clase llamada ImageLoader, que permite cargar imagenes, y una clase hija llamada Animal, y esta clase tiene varios atributos que quiero incluirle a la imagen al cargarla. Al inicializar, me llega la url de la imagen y un montón de información que se la entrego a Animal, y con la Url se la entrego al padre (con un super) para que cargue la imagen. Pero cuando la imagen es cargada, no sé cómo hacer que las propiedades de la clase Animal queden directamente en la imagen. Por ejemplo, un objeto que se llama "asdf" y tiene la imagen de un gatito, si ahora paso el mouse sobre el gatito quiero que aparezca su nombre en un popUp (por supuesto hay un montón de objetos). Porque ahora la imagen me queda como un Loader ([object Loader]) y no puedo llamar a las propiedades de Animal.

Disculpen si la pregunta es muy básica, pero estoy un poco perdida en esto.

Ésta es mi clase ImageLoader en resumen

Código ActionScript :

public class ImageLoader extends MovieClip
   {
      var loaderCursorContainer:MovieClip;
      var loader:Loader = new Loader();
      private var url;
      private var obj;

      public function ImageLoader(url_:URLRequest, obj_):void{
         url = url_;
         obj = obj_;
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenCargada);
         loader.load(url);
         addChild(loader);
      }
      
      private function imagenCargada(e:Event):void {
         trace(obj, loader);//obj es el objeto de la clase Animal, que envié para probar
      }
   

}


Muchas gracias :)

Por ayslin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Sep 2012 06:47 pm
A ver si entiendo, lo que cargas es un swf que contiene una instancia de la clase Animal?
Recuerda que el contenido de un Loader se accede mediante la propiedad content.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Sep 2012 06:57 pm
No, es sólo una imagen, un dibujo lo que cargo. Pero debo asociarle la información que le corresponde.

Por ayslin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Sep 2012 07:13 pm
Pues cuando terminas de cargarlo seteas el listener del rollOver, rollOut, etc. Lo que pones es una clase que carga una imagen, lo de Animal no lo veo por ningún lado.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Sep 2012 07:45 pm
Gracias por responder.

Lo trataré de explicar mejor.
Cuando llamo a Animal, le doy la url de la imagen, el nombre y el tamaño del animalito. Como hice un new de Animal, todos los datos del animal quedan en ese objeto (y no puedo hacerlo de otra forma por el momento).
Al hacer el Loader en la clase padre de Animal ( ImageLoader ) al pasarle la url, cuando paso el mouse sobre la imagen, esta ve el objeto Loader y no la instancia creada anteriormente.
Mi pregunta es ¿cómo le doy las propiedades que estan en el objeto Animal a esa instancia de Loader?

Por ayslin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Sep 2012 07:52 pm
No tiene mucho sentido poner el loader como clase padre de Animal, puede ser un método del animal. Si quieres ponerla como padre no pongas lo mas importante en el constructor, y menos usando la referencia al hijo como parámetro (deberías llamar a super usando this) En síntesis: me suena a una complicación innecesaria para un simple loader

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Sep 2012 08:39 pm
Puede que me este complicando, pero ImageLoader lo usan varias clases, por eso estaba de padre.
En todo caso, hice lo que me dijiste, pero sigue sin estar asociada información, y me sale el siguiente error cuando paso sobre las imagenes:

"No se encontró la propiedad nombreFicticio en flash.display.Loader y no hay ningún valor predeterminado."

Al final me quedó así:

Código ActionScript :

public class Animal extends MovieClip {
      public var nombreFicticio:String;
      public var nombre:String;
      public var descripcion:String;
      public var Url:String;
   
      private var loaderCursorContainer:MovieClip;
      private var loader:Loader = new Loader();
      
      function ObjetosInventario( url) {
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenCargada);
         loader.load(url);
         addChild(loader);
      }
      
      private function imagenCargada(e:Event):void {
         trace("cargo")
      }
   }



Y lo llamo desde el mail así :

Código ActionScript :

var animalito = new Animal(new URLRequest("gato.jpg");
addChild(animalito);
animalito.addEventListener(MouseEvent.MOUSE_OVER, overObject);


Saludos

Por ayslin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2012 01:20 pm
Ok, la clase Animal solo carga una imagen.
¿Donde esta la función overObject?
¿Donde está nombreFicticio?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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