hoy traigo un problemita con la posibilidad de acomodar texto.
Resulta que estoy haciendo una busqueda en anchura, cargando un archivo xml y pasandole un texto.
Lo que hace es partir del nodo superior, va recorriendo cada nivel comparando si la cadena de texto pasada coincide con algun nodo...sino coincide va mostrando por donde va pasando hasta que lo encuntra.
La idea es que sea un arbol, por lo que use un xml para crear la base de conocimiento y de esa forma se mas simple la busqueda.
Resulta que el codigo funciona perfectamente, sin embargo, no puedo hacer que los nodos hijos ("titulos") queden acomodados de tal forma que cada uno haga referencia a su padre y se posicione horzintalmente.
el codigo es:
Código ActionScript :
import flash.text.TextField; var xml:XML = <biblioteca> <libros> <libro> <autor nombre="Paulo Coelho"> <!--<nombre>Paulo Coelho</nombre>--> <titulo>El Alquimista</titulo> <titulo>Maktub II</titulo> <titulo>Manual del guerrero de la luz</titulo> </autor> </libro> <libro> <autor nombre="Jorge Luis Borges"> <!--<nombre>Paulo Coelho</nombre>--> <titulo>Historia universal de la infamia</titulo> <titulo>La muerte y la brújula</titulo> <titulo>El informe Brodie</titulo> </autor> </libro> <libro> <autor nombre="Julio Cortazar"> <!--<nombre>Paulo Coelho</nombre>--> <titulo>Los limpiadores de estrellas</titulo> <titulo>La tarea de ablandar el ladrillo</titulo> <titulo>Instrucciones para llorar</titulo> </autor> </libro> </libros> </biblioteca> /*--------------------------------------------------------------*/ var raiz:TextField = new TextField(); var nodoPadre:TextField; var nodoHijo:TextField; var cadena:String="Instrucciones para llorar"; //CADENA QUE TIENE QUE ENCONTRAR var ul:XMLList= xml.children(); busquedaNodoPadre(); function busquedaNodoPadre():void { if(cadena=="Libros") { crearRaiz(); } else { crearRaiz(); for (var i:uint=0; i<ul.libro.length(); i++) { if (buscarCoincidencia(xml.children().children().children()[i][email protected]())==true) { trace (xml.children().children().children()[i][email protected]()); trace ("CORRECTO"); nodoPadre = new TextField(); nodoPadre.text=xml.children().children().children()[i][email protected](); addChild(nodoPadre); nodoPadre.width = 100; nodoPadre.height = 20; nodoPadre.x =raiz.x-200+180*i; //stage.stageWidth/ul.libro.length(); nodoPadre.y =raiz.y+50; nodoPadre.border = true; nodoPadre.selectable = false; break; } else { trace("INCORRECTO"); nodoPadre = new TextField(); nodoPadre.text=xml.children().children().children()[i][email protected](); addChild(nodoPadre); nodoPadre.width = 100; nodoPadre.height = 20; nodoPadre.x =raiz.x-200+180*i; //stage.stageWidth/ul.libro.length(); nodoPadre.y =raiz.y+50; nodoPadre.border = false; nodoPadre.selectable = false; if(ul.libro.length()-1==i) { trace("FINAL DE LA FILA"); busquedaNodoHijo(); } } } } } function buscarCoincidencia(dato:String):Boolean { if (cadena==dato) { return true; } else { return false } } function busquedaNodoHijo():void { var correcto:Boolean=false; //for (var i:uint=0; i<ul.libro.autor.length(); i++) for (var i:uint=0; (i<ul.libro.autor.length()) && (!correcto); i++) { for(var k:uint=0; k<ul.libro.autor[i].titulo.length(); k++) if (buscarCoincidencia(xml.children().children().children()[i].children()[k].toString())==true) { trace (xml.children().children().children()[i].children()[k].toString()); trace ("CORRECTOOOOOOOOOOOOOooooo"); correcto=true; nodoHijo = new TextField(); nodoHijo.text=xml.children().children().children()[i].children()[k].toString(); addChild(nodoHijo); nodoHijo.width = 100; nodoHijo.height = 20; nodoHijo.x =10+150*k; //stage.stageWidth/ul.libro.length(); nodoHijo.y =nodoPadre.y+50; nodoHijo.border = true; nodoHijo.selectable = false; break; } else { trace("INCORRECTO"); nodoHijo = new TextField(); nodoHijo.text=xml.children().children().children()[i].children()[k].toString(); addChild(nodoHijo); nodoHijo.width = 100; nodoHijo.height = 20; nodoHijo.x =10+300*k; //stage.stageWidth/ul.libro.length(); nodoHijo.y =nodoPadre.y+50; nodoHijo.border = false; nodoHijo.selectable = false; if(ul.libro.autor[i].titulo.length()-1==i) { trace("FINAL DEL RECORRIDO; SIN COINCIDENCIAS"); } } } } function crearRaiz():void { trace("LIBROS"); raiz.text="Libros"; addChild(raiz); //raiz.width = 250; raiz.x =stage.stageWidth/2; raiz.y =10; raiz.border = false; raiz.selectable =false; }
cuestión que ahora los textos quedan amontonados y no se ven, por lo que si pueden ayudarme se los agradecería.
desde ya gracias.
Saludos