Comunidad de diseño web y desarrollo en internet online

correcta utilizacion del FOR y los ARRAY

Citar            
MensajeEscrito el 29 Mar 2009 03:59 pm
Buenas gente de clab, ando con un problemita.

Para no tener que escribir demasiado codigo decido recurrir a crear un array con los nombres de mis movieClips (_mc) y luego paso a utilizar el array en un for.

Código :

var miArray:Array = new Array("mi_mc". "mi_otro_mc", etc, etc)

for (var i:number = 0; i < miArray.lenght; i++ )

{
        //dentro va todo mi codigo
        this[miArray[i]].buttonMode = true; //(por ejemplo, mi idea es usar addEventListener y no funciona)
}




con el codigo de arriba funciona todo bien, pero por ejemplo si quiero ponerle eventlistener a todos mis mc con el mismo formato no me acepta, se traba en el segundo FOR que uso, o sea el que esta dentro de la funcion loadPic

alguien sabe en donde puedo aprender rapidamente la sintaxis correcta para el FOR o puede decirme que estoy haciendo mal en el codigo??

MUCHAS GRACIAS

juako

Código :

var galerias:Array = new Array("ima1_mc","ima2_mc","ima3_mc","ima4_mc","ima5_mc","ima6_mc");
            
            
            
            

            

   

            function loadPic(e:MouseEvent):void
            {
               
               
               trace ("primero");

               for (var j=0; j < galerias.length; j++)
               
               {
                  this[galerias[j]].buttonMode = false;
                  this[galerias[j]].removeEventListener(MouseEvent.CLICK, loadPic);
                  this[galerias[j]].useHandCursor = false;
                  trace ("seg trace");
                  
               }
               
               trace ("segundo trace");
               
               bg_mc.x = sWidth / 2;
               bg_mc.y = sHeight / 2;
               cargadorImagen.alpha = 0;
               cargadorImagen.load(imagen1);
               
               trace ("segfdsdfsundo trace");
   
               
               
            }
            
            
            
            
            for (var j=0; j < galerias.length; j++)
            
            {
               this[galerias[j]].buttonMode = true;
               this[galerias[j]].alpha = 1;
               this[galerias[j]].addEventListener(MouseEvent.CLICK, loadPic);
               
               
            }

Por yojuako

41 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Mar 2009 10:19 pm
Hola yojuako, primero, ¿que error te da?, segundo:

Código ActionScript :

this[galerias[j]]...

prueba sin this[] y definitivamente cambia esto:

Código ActionScript :

var galerias:Array = new Array("ima1_mc","ima2_mc","ima3_mc","ima4_mc","ima5_mc","ima6_mc");
//trata poniendo
var galerias:Array = new Array(ima1_mc,ima2_mc,ima3_mc,ima4_mc,ima5_mc,ima6_mc);//sin la comillas

Buena suerte :) :) ojala te funcione ^^ ^^
cualquier cosa aqui estamos :wink:

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 30 Mar 2009 10:28 pm
buenas puga, primero muchas gracias por responder.

lo de

Código :

this[galerias[j]]...

lo uso asi porque no me funciona de otra forma, no se cual es la sintaxis que se utiliza si no es esa. Igual probe distinto y no funcionaba. No se como lo usas vos o el resto.

Y probe lo de las comillas, pero si no las pongo, no me reconoce los movieClips.
Me salta este error:

Código :

ReferenceError: Error #1069: No se encontró la propiedad [object casa] en fattoincasa y no hay ningún valor predeterminado.
   at fattoincasa()


si lo escribo como figura en mi codigo funciona solo para algunas ordenes simples. Por ejemplo:

Código :

this[galeria[j]].buttonMode = true;

aca no tengo problema, pero con le addEventListener no funciona.

Conoces otra forma de escribirlo?
Yo trabajo desde un documentClass y eso a veces dificulta algunas sintaxis.

Muchas gracias. Sigo probando igual.

Por yojuako

41 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2009 11:21 pm
me parece que podria ser un problema de rutas, si el mc casa esta en el timeline pon root.casa en vez de casa, si esta dentro de, por ejemplo un mc ciudad pones root.ciudad.casa, entiendes.
Prueba y me dices, suerte ^^

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 31 Mar 2009 02:38 pm
buenas, ya estube probando.
Como vos decis ya lo hice funcionar, saque los corchetes innecesarios y las comillas.
Lo estoy probando en un archivo .fla sin uso del documentClass.

funciona bien hasta que dentro de la funcion creada (esto) quiero modificar utilizando el array.

puedo poner otro tipo de ordenes dentro que no tenga que ver con utilizar al array, pero eso es justamente lo que yo quiero hacer.
Fijate que es lo que puede estar mal.

muchisimas gracias puga
juako

pd:esta es la linea que no funciona

miArray[i].alpha = 0.2;



Código :

stop();
var miArray:Array = new Array(uno_mc, dos_mc, tres_mc);

for (var i:Number = 0; i < miArray.length; i++)

{
   miArray[i].buttonMode = true;
   miArray[i].alpha = 0.8;
   function esto(e:MouseEvent):void
   {
      miArray[i].alpha = 0.2;
      //gotoAndStop(2);
   }
   miArray[i].addEventListener(MouseEvent.CLICK, esto);
}

Por yojuako

41 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Abr 2009 09:35 pm
El error esta en que la funcion la declaras dentro del for y solo funciona dentro del for, crea una unica funcion que sirva para todos asi:

Código ActionScript :

stop();
var miArray:Array = new Array(uno_mc, dos_mc, tres_mc);

for (var i:Number = 0; i < miArray.length; i++){
   miArray[i].buttonMode = true;
   miArray[i].alpha = 0.8;
   miArray[i].addEventListener(MouseEvent.CLICK, esto);
}
function esto(e:MouseEvent):void
{
e.target.alpha = 0.2;
//al cambiarlo por e.target sirve para todos
//gotoAndStop(2);
}

Asi no necesitas una funcion para cada uno, automatiza las tareas.
Si mo entiendes nada mas pregunta.

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox

 

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