Comunidad de diseño web y desarrollo en internet online

Acceder desde fuera de la funcion

Citar            
MensajeEscrito el 27 Ago 2008 04:52 pm
Hola, tengo un pequeño problema, estoy haciendo un juego y tengo la clase jugador, donde importo un swf, intento acceder a su contenido mediante la variable global mcplayer. Todo bien, solo que al intentar acceder a el fuera de la funcion el valor de este es undefined. Mi teoria, despues de hacer varias pruebas, es que la variable e, que es la que guarda el evento, se borra al terminar la funcion, y como la variable mcplayer depende de esta, termina siendo undefined. He intentado hacer algo de tipo abc=e, pero abc solo hace referencia a e, y no copia el contenido de este, asi que no se que hacer. En pocas palabras, quiero acceder a mcplayerdesde afuera de la funcion. Ojala pueda alguien ayudarme :s

Aqui pongo el codigo:

Código :

package clases {
   import flash.display.Loader;
    import flash.display.MovieClip;
   import flash.display.LoaderInfo;
   import flash.utils.*;
   import flash.events.*;
   import flash.net.URLRequest;
   
   public class jugador extends MovieClip {
      
       public var propiedades:Array=new Array();
      public var abc;
      public var mcplayer;
      public var jugadorLoaderInfo:LoaderInfo;
      public var contenedorjugador:Loader=new Loader();
      
      //Constructor
      public function jugador(NOMBRE,LWIDTH,LHEIGHT,LX,LY) {
      
      //Propiedades
      this.propiedades["id"]=1; 
      this.propiedades["nombre"]=NOMBRE;
      this.propiedades["puntos"]=100;
      this.propiedades["limites"]=new Array();
      this.propiedades["limites"]["width"]=LWIDTH;
      this.propiedades["limites"]["height"]=LHEIGHT;
      this.propiedades["limites"]["x"]=LX;
      this.propiedades["limites"]["y"]=LY;
      
      //Eventos
      this.addEventListener(Event.ADDED_TO_STAGE, cargarJugador);
      }
      
      
      //Cargar Jugador
        public function cargarJugador(e:Event) {
            this.contenedorjugador.contentLoaderInfo.addEventListener(Event.COMPLETE, jugadorCargado);
          this.contenedorjugador.load(new URLRequest("jugador.swf"));
          stage.addChild(contenedorjugador);
       }
   
      //Una vez cargado se identifica con la variable "mcplayer"
       public function jugadorCargado(e:Event):void {
         abc=e;
          this.jugadorLoaderInfo= abc.target as LoaderInfo;
           addChild(abc.target.content);
           this.mcplayer=this.jugadorLoaderInfo.content;
          this.mcplayer.x=this.propiedades["limites"]["x"];
          this.mcplayer.y=this.propiedades["limites"]["y"];
         
      }
   }
}


Espero haber explicado bien. Saludos.

Por LuisHerrada

5 de clabLevel



 

Mexico

firefox
Citar            
MensajeEscrito el 27 Ago 2008 04:58 pm
Ah olvidaba, este codigo pongo en el fla.

Código :

import clases.*;
var test=new jugador("Luis",140,140,360,240);
addChild(test);
trace(test.mcplayer); 


El movieclip se agrega, todo bien, pero el trace me imprime "undefined"

Por LuisHerrada

5 de clabLevel



 

Mexico

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:00 pm
Nop, dado que es un elemento que se carga y añade al Displaylist permanece allí. El evento apunta a un contenido existente. No uses this.mcplayer sino directamente player, ya que ha sido declarado como propiedad de la clase. No veo que estes accediendo a mcplayer en otro lado después de la carga

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:14 pm
Si, disculpa, olvide poner como intento acceder a el, pero lo puse justo despues de postear.
El trace me devuelve undefined, pero si hago un trace al arreglo propiedades, por ejemplo, todo va a la perfeccion.

Por LuisHerrada

5 de clabLevel



 

Mexico

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:22 pm
Estás trazando inmediatamente después de instanciar y agregar al DisplayList, eso no da tiempo de que cargue el swf y se acceda al contenido.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:34 pm
Y de que forma puedo esperar a que se cargue el swf? He intentado con un test.addEventListener(Event.ADDED_TO_STAGE,metodo), pero no funciona. Algo estoy haciendo mal ahi :s

Por LuisHerrada

5 de clabLevel



 

Mexico

firefox
Citar            
MensajeEscrito el 27 Ago 2008 05:55 pm
Oh ya encontre solucion, el codigo en mi .fla es este:

Código :

import clases.*;
var test=new jugador("Luis",140,140,360,240);
addChild(test);
test.contenedorjugador.contentLoaderInfo.addEventListener(Event.COMPLETE,hacerTrace);

function hacerTrace(e:Event) {
trace(test.mcplayer);
}


Gracias por la ayuda, saludos.

Por LuisHerrada

5 de clabLevel



 

Mexico

firefox

 

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