Comunidad de diseño web y desarrollo en internet online

Bucle + array + class = problema

Citar            
MensajeEscrito el 27 May 2007 04:50 pm
Buenas, he hecho una clase llamada window. A la función constructora uno le pone los parametros que quiere i mediante un bucle la función los guarda en una array llamada clips. El problema esque luego, al salir de la funcion constructora, esa array está undefined. Lo he comprovado todo i es culpa del bucle. ¿Que puede pasar? He definido la variable i para los bucles, tengo el bucle ese de la función constructora i otro en una funcion que es llamada por un set interval desde la funcion constructora, pero despues del bucle de la funcion constructora, para que vean:

Código :

class window {
   private var active:String = null;
   private var clips:Array;
   private var i:Number;
   private var interval:Number;
   public var objx:Number;
   public var objy:Number;
   public function window (ac:String) {
      active = ac;
      for (i = 0; i < arguments.length - 1; i++) {
         clips[i] = arguments[i + 1]._name;
      }
      interval = setInterval (this, "period", 60);
   }
   function period () {
      trace (clips)
      for (i = 0; i < clips.length; i++) {
         _root[clips[i]]._x += (objx - _root[clips[i]]._x) / 5;
         _root[clips[i]]._y += (objy - _root[clips[i]]._y) / 5;
      }
   }
}

El principal problema es que en el trace de la funcion period, la array clips esta undefined.

PD: la clase esta en fase de pruebas
PD2: No estoy seguro si está relacionado, pero buscando por el foro me encontré con esta construccion dentro un bucle i dentro una funcion:

Código :

 array1[i] = arguments[i] != undefined ? arguments[i] : null;
Lo que no entiendo es eso de a = b != c


Espero me puedan ayudar muchas gracias :)

Por ferranpujol

177 de clabLevel



 

Mataró (Barcelona), España

msie
Citar            
MensajeEscrito el 27 May 2007 04:54 pm
los bucles for en flash se deben hacer asi:

Código :

for (var i:Number=0; i< valorMaximo; i++)
{
  // tu codigo
}


corrige.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 27 May 2007 04:56 pm
Vale, lo he corregido, pero sigue devolviendo undefined

Código :

for (var i:Number = 0; i < arguments.length - 1; i++) {
         clips[i] = arguments[i + 1]._name;
      }
Gracias de todas formas porque eso no lo sabia ;)

Por ferranpujol

177 de clabLevel



 

Mataró (Barcelona), España

msie
Citar            
MensajeEscrito el 27 May 2007 11:51 pm
Inicializa el array:

Código :

clips = new Array();


al comienzo de la función window.

Saludos!

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

firefox
Citar            
MensajeEscrito el 28 May 2007 09:56 am
Hola,

Primero, no me conozco tu clase, pero ya dirás porqué quieres meter las propiedades en un array?

Segundo, todo lo que sea listener, enterFrame, loadMovie, intervalos etc....tendrás que utilizar la clase Delegate. La de flash u otras que circulan por ahí y son mejores porque se les pueden pasar parametros.

Aquí un link que te lo aclarará. Yo tb pasé por eso....

http://www.zarate.tv/articulos/delegando-que-es-gerundio/

Por LK

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2007 04:01 pm
Gracias ;), solo hacia falta inicializar el array. Eso es porque no la tenia en memoria o algo así, o sea, que hace exactamente el new¿?

PD: Eso de delegate no lo he usado pero gracias de todas formas.

Por ferranpujol

177 de clabLevel



 

Mataró (Barcelona), España

msie
Citar            
MensajeEscrito el 28 May 2007 06:39 pm
Lo que has dicho, el new reserva espacio en la memoria para poder almacenar el array.

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

firefox
Citar            
MensajeEscrito el 28 May 2007 06:41 pm
¿Gracias, y no hay algún toturial que trate todo esto, los constructores, la memoria,etc...? ¿O no hay más?

Por ferranpujol

177 de clabLevel



 

Mataró (Barcelona), España

msie
Citar            
MensajeEscrito el 08 Jul 2009 01:31 pm
Gracias! Me ha solucionado el mismo problema. Mi error estaba que declaraba las variables dentro de la función.

Por otsugua

1 de clabLevel



 

firefox

 

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