¿Quieres registrarte?

Array Click

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

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

Código :

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

dianita666


clabLevel: 46



firefox
      MP    
Citar            
MensajePublicado: 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 :

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){
    ....
}

Eliseo2


clabLevel: 529



firefox
      MP    
Citar            
MensajePublicado: 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 :

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);
      }
   }
}

dianita666


clabLevel: 46



firefox
      MP    
Citar            
MensajePublicado: 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 :

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

O, en tu función Main

Código :

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 :

         _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 :

      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.

Eliseo2


clabLevel: 529



firefox
      MP    

   Página 1 de 1

Responder al tema
Respuesta Rapida


 

 

Cristalab BabyBlue + BloodBerry © 2007 Cristalab
Powered by phpBB © 2001, 2007 phpBB Group

3 6 7 8 10 11 12 14 15 17 18 28 34 38 40 42 44 45 46 47 48