Resulta que estoy intentando adaptar un ejemplo que encontré por allí a un proyecto, pero han surgido dos o tres cuestiones sobre las que necesitaría ayuda
El siguiente código me carga los datos de un archivo xml, creando a la izquierda un listado con nombres y arriba a la derecha los datos relacionados con cada nombre (se muestran al cliquear cada nombre).
Hasta allí todo bien, funciona sin problemas.
Este es el código (primer frame de una película vacía):
Código:
aqui = this;
basex = 5;
basey = 5;
//Instancia de la clase
var contactos:xmltoObject = new xmltoObject();
//cargamos nuestro XML
var mi_xml = new XML();
mi_xml.ignoreWhite = true;
mi_xml.load("db.xml");
mi_xml.onLoad = function() {
info = contactos.makeObject(this);
for (var e in info) {
var menu_mc = aqui.boton(info[e].nombre, e);
menu_mc.id = e;
menu_mc._x = basex;
menu_mc._y = basey;
basey += menu_mc._height;
menu_mc.onRelease = function() {
datos = "<b>Nombre</b>: "+info[this.id].nombre+"<br>";
datos += "<b>Direccion</b>: "+info[this.id].direccion+"<br>";
datos += "<b>Telefono</b>: "+info[this.id].telefono+"<br>";
datos += "<b>Web</b>: "+info[this.id].web+"<br>";
datos += "<b>E-mail</b>: "+info[this.id].email+"<br>";
info_mc = aqui.boton(datos, e+25);
info_mc._x = 190;
info_mc._y = 5;
};
}
};
/************************************************
Prototipo para crear Botones...
**************************************************/
MovieClip.prototype.boton = function(label, prof) {
var clip = this.createEmptyMovieClip("a"+prof, prof);
clip.createTextField("label_txt", 1, 0, 0, 0, 0);
clip.label_txt.autoSize = true;
clip.label_txt.multiline = true;
clip.label_txt.html = true;
clip.label_txt.htmlText = label;
return clip;
};
Mi
db.xml luce algo como esto (son unos 20 items):
Código:
<?xml version='1.0' encoding='UTF-8' ?>
<datos>
<integrante>
<nombre>Laura Perez</nombre>
<direccion>Berutti 67</direccion>
<telefono>435-907</telefono>
<web>www.laura.com.mx</web>
<email>[email protected]</email>
</integrante>
<integrante>
<nombre>Claudia Sanchez</nombre>
<direccion>Mathews 201</direccion>
<telefono>443-006</telefono>
<web>www.sanchez.com.mx</web>
<email>[email protected]</email>
</integrante>
</datos>
El primer inconveniente es que necesitaría scrollear el listado de la izquierda (los nombres) porque en la película donde insertaré esto tengo un espacio limitado y la cantidad de nombres sobrepasa ese espacio ... pero ¿Cómo?
El segundo problema es que necesito poner los textos en Arial 11 y aparecen en Times New Roman, esto desde dónde debería hacerlo?
Ah, el
xmltoObject que cita el script es éste archivo externo (xmltoObject.as):
Código:
//xmltoObject.as
class xmltoObject {
function xmltoObject() {
}
function makeObject(obj:XML):Array {
var info_array = [];
var nodo = obj.firstChild.childNodes;
for (var a in nodo) {
var info = {};
var hijo = nodo[a].childNodes;
for (var e in hijo) {
info[hijo[e].nodeName] = hijo[e].firstChild;
}
info_array.push(info);
}
return info_array;
}
}
La idea es tener un listado de nombres de un lado (scrolleable) que al hacer click sobre cada uno muestre los datos relacionados a la derecha. Me parece muy útil tener esos datos en un XML, pero hasta acá llegué ...
Gracias de antemano!