Comunidad de diseño web y desarrollo en internet online

Buscar objetos en contenedores del escenario

Citar            
MensajeEscrito el 20 Feb 2010 11:28 am
Buenas tengo un problema gordo entre las manos y me estoy partiendo la cabeza. Trabajo en AS3. Resulta que necesito acceder desde cualquier parte de mi fla a un objeto que está vinculado en la biblioteca a una clase llamada Login. Yo se que puedo recorrer los objetos de un contenedor con esto:

Código ActionScript :

for(var i=0;i<this.numChildren;i++){
   
   if(this.getChildAt(i) is Login){
         trace("el objeto " + i + " de nombre " +   this.getChildAt(i).name + " es de la clase Login");
}
}


He pensado por ejemplo que this sea stage para hacer la busqueda desde el nivel superior del fla. Bien hasta aquí no hay problema porque puedo recorrer el contenedor que quiera. El problema está cuando un contenedor tiene dentro otro contenedor y claro, tengo que recorrerlos todos hasta que encuentre el objeto Login que necesito manipular. Esto lo que parece es la típica busqueda en profundidad que se puede hacer por ejemplo en C++, pero aquí no se como hacerlo por que si yo hago una llamada recursiva cuando se de el caso de que un getChildAt(i) sea otro contenedor pues flash se queda pillado y la verdad no se como puedo solucionar esto. ¿Alguna idea para tirar por otro camino? ¿Alguna idea para hacer la recursividad correctamente? Muchas gracias.

Por negro81

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2010 12:34 pm
Hola,
prueba a ver si te funciona esto:

Código ActionScript :

function searchLogin(doc:DisplayObjectContainer):void
{
   for (var i:int = 0; i < doc.numChildren; i++)
   {
      if (doc.getChildAt(i) is DisplayObjectContainer)
      {
         searchLogin(doc.getChildAt(i) as DisplayObjectContainer);
      }
      if (doc.getChildAt(i) is Login)
      {
         trace(doc.getChildAt(i));
      }
   }
}


Para llamar a la función le pasas el stage que quieras:

Código ActionScript :

searchLogin(this.stage);

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Feb 2010 03:19 pm
Muchas gracias isidoro, ahora si funciona la recursion, o eso parece, es que hasta el momento, se quedaba colgado el programa.

Por negro81

5 de clabLevel



 

firefox

 

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