Comunidad de diseño web y desarrollo en internet online

Ayuda otra vez!!

Citar            
MensajeEscrito el 29 Ene 2008 08:55 pm
Hola, yo otra vez :P
Estoy haciendo una aplicacion en la cual tengo varios swf externos, tonces por medio de amfphp esoty cargando los parametros como x,y,height,ect para asi cuando cargue los swf, modificarlos.
Tonces con un for voy recorriendo los resultados devueltos por php; para poder modificar el swf cargado mando el loader a una clase Singleton junto con los parametros del mismo y asi cuando llegue a l evento COMPLETE, se modifique.

Ahora el problema es que no llama la funcion cuando se produce el evento COMPLETE.
No se que estare haciando mal. :cry:
Aqui esta el codigo:

Código :

package {
   import flash.display.MovieClip;
   import flash.events.*;
   import flash.net.NetConnection;
   import flash.net.Responder;
   import flash.display.*;
   import flash.net.URLRequest;
   import flash.geom.Matrix;
   import flash.events.Event;

   
   public class Main extends MovieClip {
      private var gateway:String = "http://localhost/amfphp/gateway.php";
      private var connection:NetConnection;
      private var responder:Responder;
      private var s:Singleton;
      private var mapa:Loader;
      
      public function Main() {
         //this.addEventListener(MouseEvent.CLICK, sendData);
         responder = new Responder(onResult, onFault);
         connection = new NetConnection;
         connection.connect(gateway);
         mapa = new Loader();
         this.sendData();
         //mapa.addEventListener(Event.COMPLETE,sendData);
         var urlReq:URLRequest = new URLRequest("mapa_costarica.swf");
         mapa.load(urlReq);
         addChild(mapa);
      }
      
      public function sendData():void {
         trace("Sending Data to AMFPHP");
         var params = "no envia nada";
         connection.call("Servicio.ob_datos", responder, params);
      }
      
      private function onResult(result:Object):void {
         
   
      for (var i:int = 0; i < result.length; ++i){
      
      var ldr:Loader = new Loader();
      ldr.addEventListener(Event.COMPLETE,onComplete);
      var urlReq:URLRequest = new URLRequest(result[i].path);
      ldr.load(urlReq);
      s=Singleton.getInstance(ldr,result[i].weight,result[i].height,result[i].x,result[i].y,result[i].rotation);
      addChild(ldr);
      
      }
      }


function onComplete(event:Event):void //AQUI NO ENTRA!!
{
   trace("llegue1");
   trace(s.w);
   s.l.width=s.w;
   s.l.height=s.h;
   s.l.x= s.x;
   s.l.y= s.y;
   s.l.rotation=s.r;
}
   
      private function onFault(result:Object):void {
         trace(result);
      }
   }
}


La clase Singleton:

Código :

package{
   import flash.display.Loader;
      public class Singleton {
      public var x:int;
      public var y:int;
      public var h:int;
      public var w:int;
      public var r :int;
      public var l:Loader;
      private static var instance : Singleton;
   public function Singleton (ldr:Loader,ww:int,hh:int,xx:int,yy:int,rr:int)
   {
      trace("crea");
      l=ldr;
      x=xx;
      y=yy;
      h=hh;
      r=rr;
   }
   public function modificar (ldr:Loader,ww:int,hh:int,xx:int,yy:int,rr:int){
      trace("modifica");
      l=ldr;
      x=xx;
      y=yy;
      h=hh;
      r=rr;
   }
    public static function getInstance(ldr:Loader,ww:int,hh:int,xx:int,yy:int,rr:int):Singleton {
        if (Singleton.instance == null) {
            Singleton.instance = new Singleton(ldr,ww,hh,xx,yy,rr);
        }else{
         instance.modificar(ldr,ww,hh,xx,yy,rr);
      }
        return Singleton.instance;
    }
}
}

Por Lunaty

Claber

118 de clabLevel



Genero:Femenino  

Flash Developer & RM Email Support for Google

msie
Citar            
MensajeEscrito el 29 Ene 2008 10:10 pm
Lunaty, primero que todo.. no necesitas poner s.l.algo
con poner Singleton.getInstance().laVariable, ya obtienes el resultado.., ademas la variable s solo tiene ámbito en el bloque de onResult, por lo que tratar de recuperarla en otro bloque es imposible.. ademas, como singleton es estatica no tienes que crear una variable..... la puedes llamar directamente..
otra cosa, eso de poner parametros en el metodo getInstance es un horror.. getInstance se usa para devolverte la unica instancia de esa clase en el proyecto. y por ende no tiene por que ser el mecanismo de entrada de datos, para eso define otros metodos dentro de la misma clase Singleton.

lunaty, pudieras decirnos en escencia que es lo que tratas de hacer .? ....

salu2

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 29 Ene 2008 10:23 pm
Ademas lunaty, por que mejor cuando te llegan los datos desde AMFPHP, no le pones esos datos al ldr, y lo mandas a cargar, es decir

Código :

//Ya estan los datos abajo
ldr.load(el urlrequest);
ldr.x = datoX;
ldr.y = datoY;

this.addChild(ldr);


Ya el ldr esta en las posiciones indicadas, y no tienes que preocuparte que termine de cargar para ent, ponerlo en las coordenadas que quieras. por lo que lo del singleton, para esto en especifico, no te hace falta..!

salu2

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 29 Ene 2008 10:25 pm
Gracias por la respuesta :)

Lo del Singleton no sabia como se utilizaba, gracias por el consejo.
El asunto es que los datos si los guarda en el singleton y eso ya lo comprobe, el problema es que al recorrer el for en la funcion onResult debe cargar un swf externo con los parametros que obtuve con el amfphp, ese swf cargado debo modificarlo de tamaño y colocarlo en una posicion especifica, lo cual solo se puede hacer en el evento COMPLETE del loader.
El problema es que no me llama la funcion del evento, como si este nunca ocurriera, entonces todos los swf los carga desordenadamente.

Por Lunaty

Claber

118 de clabLevel



Genero:Femenino  

Flash Developer & RM Email Support for Google

msie
Citar            
MensajeEscrito el 29 Ene 2008 10:40 pm
mira mañana te paso un pedazo de codigo de algo que hice muy parecido a eso.
ahora mismo, see you , voy a casa.!

salu2

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 29 Ene 2008 10:49 pm
ok Te agradezco XD

Por Lunaty

Claber

118 de clabLevel



Genero:Femenino  

Flash Developer & RM Email Support for Google

msie

 

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