Foros del Web » Creando para Internet » Flash y Actionscript »

Carga desde XML - Ayuda con este script

Estas en el tema de Carga desde XML - Ayuda con este script en el foro de Flash y Actionscript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/07/2004, 06:56
Avatar de duchamp  
Fecha de Ingreso: enero-2002
Ubicación: Patagonia
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 1
Carga desde XML - Ayuda con este script

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!
__________________
_____________________
Duchamp
  #2 (permalink)  
Antiguo 06/07/2004, 09:43
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Puedes usar el ScrollPane creas los botones dentro de un MC y este MC lo asignas como contenido del ScrollPane
Código:
mi_xml.onLoad = function() {
	info = contactos.makeObject(this);
        conte = aqui.createEmptyMovieClip("Nombre", 500)
	for (var e in info) {
		var menu_mc = conte.boton(info[e].nombre, e);.
                ///Lo demas aqui

        }
        //y al final del For Asignas el contenido
        tuScrollPanel.setScrollContent(conte)
Para la Fuente crea un formato de texto con TextFormat y simplemente lo aplicas al campo.... Mas info Aqui http://www.macromedia.com/support/fl...ionary788.html

PD. Checa bien la sintaxis que lo hice si probar..

Saludos!!
  #3 (permalink)  
Antiguo 06/07/2004, 10:21
Avatar de duchamp  
Fecha de Ingreso: enero-2002
Ubicación: Patagonia
Mensajes: 216
Antigüedad: 22 años, 3 meses
Puntos: 1
Chas gracias. Lo chequearé luego y si funciona posteo el código final.

Vaya! Acabo de darme cuenta que el FLA lo había bajado de tu web!!!
Gracias dobles, aunque mi primer intento para modificarlo no ha resultado. Volveré a intentarlo mañana.

Saludos
__________________
_____________________
Duchamp

Última edición por duchamp; 06/07/2004 a las 14:32
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:14.