Comunidad de diseño web y desarrollo en internet online

Optimizar codigo Array

Citar            
MensajeEscrito el 11 Feb 2010 08:06 am
Hola!!!

Me gustaria que me ayudaran a optimizar este codigo, en un bucle, no se..
este esta con dos botones, pero en realidad son mas, tal vez un array con infinitos botones...

Gracias.



Código ActionScript :

package{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.net.URLRequest;
   import flash.net.navigateToURL;
   
   
   public class Galeria extends MovieClip{
      
      
      public function Galeria(){
         fondo_mc.addEventListener(Event.ENTER_FRAME,mover);
         fondo_mc.botones_mc.Btn0_mc.addEventListener(MouseEvent.CLICK,uno);
         fondo_mc.botones_mc.Btn1_mc.addEventListener(MouseEvent.CLICK,dos);
      }
      
      private function mover(event:Event):void{
         switch(event.type) { 
            case Event.ENTER_FRAME: 
            fondo_mc.rotationX =  fondo_mc.mouseY /20; 
            fondo_mc.rotationY =  fondo_mc.mouseX /15;  
         }
      }
      
      private function uno(e:MouseEvent):void{
         var jscommand:String = "window.open('cargas/fotografia/1.jpg','win','width=820,height=620,toolbar=no,scrollbars=no');";
         var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self"); 
      }
      private function dos(e:MouseEvent):void{
         var jscommand:String = "window.open('cargas/fotografia/2.jpg','win','width=820,height=620,toolbar=no,scrollbars=no');";
         var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");
      }
   }
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 04:23 pm
Puedes usar una funcion para todos los botones y armar la cadena del jscommand en base al nombre del boton:

Código ActionScript :

function Botones(e:MouseEvent):void{
//Guardas la cadena nombe que sea Boton0,Boton1,Boton2..etcetc
var nombre:String=e.currentTarget.name;

//A la cadena nombre le cortas la cadena boton
//Checa bien como funciona indexof y substring porq lo esoty haciendo de memoria pero no se si funcione bien
nombre=nombre.substring(nombre.indexOf("Boton")+1);

//La idea es eliminar la cadena Boton de modo que va quedar 0,1,2,etc,etc

//tu no tienes una foto 0 pero si una foto 1 entonces solo basta sumarle 1 a la cadena obtenia para esto antes la haces entero
//Y la regresas a cadena :P)
nombre=(int(nombre)+1).toString();

//listo ahora solo armas el jscommand 
 var jscommand:String = "window.open('cargas/fotografia/"+nombre+".jpg','win','width=820,height=620,toolbar=no,scrollbars=no');"; 
var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self"); 
}


Espero eso sirva ;) Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 07:27 pm
Mira lo hice de esta forma, pero aun no he podiso pasarle la ruta dinamica a la funcion onClickBtn

Código ActionScript :

package{
   
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.display.Loader;
   import flash.net.URLRequest;
   import flash.net.navigateToURL;
   
   
   public class Galeria extends MovieClip{
      private var _botones:Array;
      private var jscommand:String;
      private var url:URLRequest;
      
      public function Galeria(){
         fondo_mc.addEventListener(Event.ENTER_FRAME,mover);
         _botones = obtenerBotones(fondo_mc.botones_mc);
         construirMenu(_botones);
      }
      
      private function mover(event:Event):void{
         switch(event.type) { 
            case Event.ENTER_FRAME: 
            fondo_mc.rotationX =  fondo_mc.mouseY /20; 
            fondo_mc.rotationY =  fondo_mc.mouseX /15;  
         }
      }
      
      private function obtenerBotones(con:MovieClip):Array{
         var tmp:Array = new Array();
         for(var j:uint=0; j<con.numChildren;++j)
         {
            var btn:MovieClip = con.getChildByName("Btn" + j + "_mc") as MovieClip;
            tmp.push(btn);
         }
         return tmp;
      }
      
      private function construirMenu(arra:Array):void
      {
         for(var i:uint=0; i<arra.length;++i)
         {
            var btn:MovieClip = _botones[i] as MovieClip;
            btn.swfRuta = "fotografia/img" + i + ".jpg";
            btn.addEventListener(MouseEvent.CLICK,onClickBtn);
         }
      }
      
      private function onClickBtn(e:MouseEvent):void{
         jscommand = "window.open('fotografia/arra','win','width=820,height=620,toolbar=no,scrollbars=no');";
         url = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");
         //_cargador = new Loader();
         //_cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);
         //_cargador.load(new URLRequest(e.currentTarget.swfRuta));
      }
   }
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 08:09 pm
Veo que estas haciendo tu galeria del otro post :P

Donde intentas recuperar la ruta??

El target del evento en la funcion onClickBtn lleva una propiedad swfRuta ques la propiedad que asiganste con la ruta de cada imagen.


Código ActionScript :

 private function onClickBtn(e:MouseEvent):void{ 
         var img:String=MovieClip(e.currentTarget).swfRuta;
         jscommand = "window.open('fotografia/arra','win','width=820,height=620,toolbar=no,scrollbars=no');"; 
         url = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self"); 
      } 


La variable img es la ruta de la imagen que tu le especificaste al boton ya teniendola ps concatenala en tu jscommand o donde se necesite.

Las imagenes no las estas cargando?? simplemente las muestras en otra ventana??

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 08:16 pm
Eso es precisamente lo que no hepodido hacer...

Ya se que tengo ya lo mas dificil, pero no he podido con esa ultima parte

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 10:25 pm
Eso es lo que no puedes hacer?? que cosa?? :S

Ya te puse como recuperar la direccion de tu funcion onClickBtn o que es lo que no sale entonces??

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 10:36 pm

Código ActionScript :

private function onClickBtn(e:MouseEvent):void{
         jscommand = "window.open('ARCHIVO','win','width=820,height=620,toolbar=no,scrollbars=no');";
         url = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");
         //_cargador = new Loader();
         //_cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);
         //_cargador.load(new URLRequest(e.currentTarget.swfRuta));
      }


Donde dice : ARCHIVO va la ruta del archivo a abrirse, por ej: imagen.jpg
Poniendole nombre de variables, me da este error al intentar abrirlo:

Código ActionScript :

Firefox no puede encontrar el archivo en /D:/sseñor/PORTAFOLIO/WEB/ARCHIVO.

es decir, ahi no acepta nombres de variables
¿Que puedo hacer?

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 10:46 pm
Si acepta nombres de variables pero en realidad alli lo usas como cadena,

fijate como armas el URLRequest:

Código ActionScript :

new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");

Si te fijas utilizas la variable jscommand y la concatenas a otras dos cadenas.

Puedes hacer eso mismo en tu codigo si ya tienesla url en una variable,swfRuta es una propiedad que tu le asignas a los botones y es es la ruta de tu imagen.

Código ActionScript :

private function onClickBtn(e:MouseEvent):void{  
         //Recupero la ruta del target del evento
         var img:String=MovieClip(e.currentTarget).swfRuta;
         // Esa ruta la concatenas a tu cadena de abajo
         //usa un trace de jscommand para ver la ruta que marca 
         jscommand = "window.open("'"+img+"','win','width=820,height=620,toolbar=no,scrollbars=no');";  
         url = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");  
      } 


Para usar una variable no le pongo comillas porq ponerle comillas es especificar que es una cadena si te fijas tuve que concatenar la comilla simple antes de la url y despues para que quede del tipo '1.jpg'.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 11:08 pm
Ahora si me salio

Muchas gracias Angel!!!
:wink: :wink:

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2010 11:10 pm
No hay de que estamos aqui para lo que se necesite :)

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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