Comunidad de diseño web y desarrollo en internet online

construccionde botones a traves de for

Citar            
MensajeEscrito el 13 Ago 2010 12:41 am
Buenas a toda la gente de cristalab.

Acudo a ustedes porque tengo un problema al cual le he dado todas las vueltas posibles y no logro encontrar la respuesta...ojala me haga entender...

Estoy haciendo un buscador en as3, cuando la gente ingresa los criterios de busqueda y da click en el botón buscar, el programa acude a un xml en donde están consignados todos los proyectos de la empresa de la siguiente manera:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<proyectos>
  <proyecto>
    <id>1</id>
    <depto>Atlantico</depto>
    <ciudad>Bogota</ciudad>
    <zona>Norte</zona>
    <tipo>Bodega</tipo>
    <negocio>Arriendo</negocio>
    <info>informacion01</info>
  </proyecto>
  <proyecto>
    <id>2</id>
    <depto>Atlantico</depto>
    <ciudad>Manati</ciudad>
    <zona>Sur</zona>
    <tipo>Bodega</tipo>
    <negocio>Venta</negocio>
    <info>informacion02</info>
  </proyecto>
  <proyecto>
    <id>3</id>
    <depto>Antioquia</depto>
    <ciudad>Suan</ciudad>
    <zona>Occidente</zona>
    <tipo>Bodega</tipo>
    <negocio>Arriendo</negocio>
    <info>informacion03</info>
  </proyecto>
  <proyecto>
    <id>4</id>
    <depto>Atlantico</depto>
    <ciudad>Girardot</ciudad>
    <zona>Oriente</zona>
    <tipo>Bodega</tipo>
    <negocio>Arriendo</negocio>
    <info>informacion04</info>
  </proyecto>
</proyectos>


Estoy llamando la información que el usuario requiere de acuerdo a los filtros de busqueda y la estoy mostrando de la siguiente manera:

Código ActionScript :

var urlProyectos:URLRequest = new URLRequest ("proyectos.xml");
var cargadorProyectos:URLLoader = new URLLoader(urlProyectos);
var textoDepto:TextField;
var textoCiudad:TextField;
var textoZona:TextField;
var textoTipo:TextField;
var textoNegocio:TextField;
var contenedor:MovieClip = new MovieClip();
var informacionProyectos:XML;
var txt:Array = new Array();
var i:int;
cargadorProyectos.addEventListener(Event.COMPLETE, cargaProyectos);

function cargaProyectos(e:Event) {
   informacionProyectos = new XML(cargadorProyectos.data);
   for (i = 0; i<informacionProyectos..proyecto.length(); i++) {
      if (informacionProyectos..proyecto.depto[i] == "Atlantico" && informacionProyectos..proyecto.tipo[i] == "Bodega") {
         textoDepto = new TextField;
         textoCiudad = new TextField;
         textoZona = new TextField;
         textoTipo= new TextField;
         textoInfo = new TextField();
         textoNegocio = new TextField();
         textoDepto.text = informacionProyectos..proyecto.depto[i];
         textoDepto.y = i*120;
         textoCiudad.text = informacionProyectos..proyecto.ciudad[i];
         textoCiudad.y = i*120+22;
         textoZona.text = informacionProyectos..proyecto.zona[i];
         textoZona.y = i*120+44;
         textoTipo.text = informacionProyectos..proyecto.tipo[i];
         textoTipo.y = i*120+66;
         textoNegocio.text = informacionProyectos..proyecto.negocio[i];
         textoNegocio.y = i*120+88;
         contenedor.addChild(textoDepto);
         contenedor.addChild(textoCiudad);
         contenedor.addChild(textoZona);
         contenedor.addChild(textoTipo);
         contenedor.addChild(textoNegocio);
         addChild(contenedor)
      }
   }
}


Lo anterior me dice que el usuario quiere ver los proyectos que son del departamento Atlantico y que son de tipo bodega.....el código me funciona perfectamente, ya que me muestra la información requerida....lo que pasa es que no me muestra la información ordenada, ya que si por ejemplo, los proyectos que se encuentran en el nodo 1 y 3 del xml cumplen con el criterio de búsqueda, el primero se me muestra en la coordenada 0 y el otro en la coordenada 240, dejando un espacio en blanco entre los 2 proyectos ya que el proyecto que se encuentra en el nodo 2 del xml no cumple con el criterio de búsqueda que el usuario requiere....

Como hago para que, sin importar la ubicación de nodo del proyecto en el xml, se me muestren consecutiva y ordenadamente los proyectos....

Ojalá me haya hecho entender y por favor solicito ayuda lo más pronto posible :shock: :shock: :shock: ....de antemano muchas gracias por lo que me puedan colaborar....

Por maooricio

51 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Ago 2010 11:21 am
No uses el contador del loop, usa uno que se incremente cuando se ejecuta el if, ejemplo:

Código ActionScript :

var offset:Number = 0;
for (i = 0; i<informacionProyectos..proyecto.length(); i++) { 
    if (informacionProyectos..proyecto.depto[i] == "Atlantico" && informacionProyectos..proyecto.tipo[i] == "Bodega") { 
         (...)
         textoDepto.text = informacionProyectos..proyecto.depto[i]; 
         textoDepto.y = offset*120; 
         (...)
         offset++
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Ago 2010 03:08 pm
:o

Gracias Jorge de todo corazon me salvaste de una que crei no podía salir, perdoname por la bobada que era :P :P :P :P ...gracias una vez mas

Por maooricio

51 de clabLevel



Genero:Masculino  

firefox

 

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