Comunidad de diseño web y desarrollo en internet online

Array Click

Citar            
MensajeEscrito el 08 Feb 2010 05:36 am
Hola!!!!
Tengo una dudilla

Como hago para pasarle el Array a la funcion construirMenu():

Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.display.Loader;
   import flash.net.URLRequest;
   
   
   public class Principal extends MovieClip{
      private var _botones:Array;
      private var _contenedor:MovieClip
      private var _cargador:Loader
      
      public function Principal(){
         _botones = new Array(new Web(),new Fotografia(),new Animacion(),new Identidad(),new Impresos(),new Perfil(),new Contacto());
         _contenedor = new MovieClip();
         addChild(_contenedor);
         construirMenu();
      }
      
      
      private function construirMenu():void{
         var btn:MovieClip;
         var i:uint=0
            btn = _botones as MovieClip;
            btn = _botones[i] as MovieClip;
            btn.swfRuta = "cargas/swf" + i + ".swf";
            btn.addEventListener(MouseEvent.CLICK,onClickBtn);
         }

      
      private function onClickBtn(e:MouseEvent):void{
         _cargador = new Loader();
         _cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);
         _cargador.load(new URLRequest(e.currentTarget.swfRuta));
         trace("sisarras");
      }
      
      private function onCompleteLoad(e:Event):void{
         var swfCargado:MovieClip = e.target.content as MovieClip;
         if(_contenedor.numChildren > 0) {
            _contenedor.removeChildAt(0);
         }
         _contenedor.addChild(swfCargado);
      }
   }
}

Gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Feb 2010 07:30 am
Diana, ya que has declarado tu array FUERA de cualquier función, Esa variable está "a nivel de clase". Lo que quiere decir es que lo puedes usar DENTRO de cualquier función
NOTA:Si alguna vez queremos pasar a una función un array pues es como cualquier otro tipo de "argumento"

Código ActionScript :

function unafuncion(){
   var miArray=new Array() //<--si lo declaramos aquí
        //lo podemos usar sólo dentro de esta función
        //y lo podemos usar como argumento
   ....
   cambiaArray(miArray)
}
function cambiaArray(miArray){
    ....
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Feb 2010 06:17 pm
Pues veras, soy la afortunada pupila de jn_flash, el me estuvo enseñando este ejemplo pero con un boton de la biblioteca que se triplicaria y una funcion a cadauno, todo esto dentro de un for, funciono perfectamente, obvio, pero ahora no he podido aplicarlo a mi proyecto en el que cada boton es una ilustracion distinta y ya esta en el escenario este es code del ejemplo que Johnatan me hizo:

Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.display.Loader;
   import flash.net.URLRequest;
   
   
   public class Main extends MovieClip
   {
      private var _botones:Array;
      private var _contenedor:MovieClip
      private var _cargador:Loader
      
      public function Main()
      {
         _botones = new Array(new Btn(),new Btn(),new Btn());
         _contenedor = new MovieClip();
         addChild(_contenedor);
         _contenedor.x = _contenedor.y = 10;
         construirMenu();
      }
      
      
      private function construirMenu():void{
         var btn:MovieClip;
         for(var i:uint=0; i<_botones.length;++i){
            btn = _botones[i] as MovieClip;
            trace(btn);
            btn = _botones[i] as MovieClip;
            btn.x = (btn.width + 5) * i;
            btn.y = 30;
            addChild(btn);
            //trace(btn);
            btn.swfRuta = "assets/swf" + i + ".swf";
            btn.addEventListener(MouseEvent.CLICK,onClickBtn);
         }
      }
      
      private function onClickBtn(e:MouseEvent):void{
         _cargador = new Loader();
         _cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);
         _cargador.load(new URLRequest(e.currentTarget.swfRuta));
      }
      
      private function onCompleteLoad(e:Event):void{
         var swfCargado:MovieClip = e.target.content as MovieClip;
         if(_contenedor.numChildren > 0) {
            _contenedor.removeChildAt(0);
         }
         _contenedor.addChild(swfCargado);
      }
   }
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Feb 2010 07:52 am
Si lo que tienes es en el escenario una serie de botones cuyo nombre de instancia es, p.e. "bt1","bt2","bt3" el array simplemente lo formas como

Código ActionScript :

private var _botones:Array=new Array(bt1,bt2,bt3)

O, en tu función Main

Código ActionScript :

public function Main() 
      { 
         _botones = new Array(bt1,bt2,bt3); 
         construirMenu(); 
      } 


Si están dentro de un MC cuyo nombre de instancia es "contenedor", el array se declararía como

Código ActionScript :

         _botones = new Array(contenedor.bt1,contenedor.bt2,contenedor.bt3); 


Si lo que tienes es sólo la biblioteca. Vamos, que los quieres crear la cosa es "cómo crear un objeto de una Clase cuando sabemos el nombre". Para ello debemos usar "getDefinitionByName()".
Vamos, supongo que tus botones serán de las Clases "Bt1","Bt2","Bt3" -observa que las Clases suelen tener como nombre en mayúsculas. Podríamos escribir

Código ActionScript :

      public function Main() 
      { 
            _contenedor = new MovieClip(); 
            addChild(_contenedor); 
            _contenedor.x = _contenedor.y = 10; 
            for (var i:int=1;i<=3;i++){
                 var ClassReference:Class = getDefinitionByName("Bt"+i) as Class;
                 var bt:Object = MovieClip(new ClassReference());
                 _botones.push(_contenedor.addChild(bt);
            }
          construirMenu(); 
      } 



Si no los tienes en el escenario, sino simplemente
Y ya no tienes que crearte el array nunca más.

Por Eliseo2

710 de clabLevel



 

firefox

 

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