Tema: mostrar XML
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/02/2008, 10:03
Avatar de kesioo
kesioo
 
Fecha de Ingreso: enero-2007
Ubicación: Capital Federal, Argentina
Mensajes: 137
Antigüedad: 17 años, 3 meses
Puntos: 2
mostrar XML

Buenas, estoy haciendo un lista en flash desde un xml.
Con el codigo que vengo haciendolo hasta ahora (solo mostrando los ID en TextFields dinamicos) los muestra y todo, el tema es que yo quiero que el mc en donde estaran los diferentes campos dinamicos (para ID, Nombre, etc) esten dentro de un mc mas grande (content_mc) para poder hacer un scroll..

Codigo:

stop();
cont = _root.createEmptyMovieClip("content_mc", _root.getNextHighestDepth());
cont._x = 4;
cont._y = 45;
cont._width = 472;
cont.setMask(_root.mask_mc);


// Para no tener problemas con las tildes
// y otros caracteres especiales
System.useCodepage = true;

// Evitamos que Flash interprete
// los saltos de línea del xml como nodos en blanco
XML.prototype.ignoreWhite = true;

// definimos el objeto XML
datos_xml = new XML();
// Cuando se carguen los datos ejecutaremos
// la función cargarDatos
datos_xml.onLoad = cargarDatos;
// Definimos el array donde almacenaremos
// los datos de los coches
obras_array = new Array();
// la función cargarDatos se invoca cuando
// hago la llamada a datos_xml.load("obras.xml");
// al final del código
function cargarDatos(exito) {
// si el xml se ha cargado bien...
if (exito) {
// en el array obrasCargadas meto los
// nodos <obra> de segundo nivel, pero
// como todavía no están en el formato
// que nos interesa, nos lo vamos a recorrer
// y cada elemento lo pasamos como parámetro
// a la función pasar_a_array que deja la
// información a nuestro gusto
obrasCargadas = this.firstChild.childNodes;
for (var k = 0; obrasCargadas[k]; k++) {
pasar_a_array(obrasCargadas[k]);
}
// una vez convertidos los datos, eliminamos
// los objetos que ya no vamos a necesitar, así
// liberamos memoria
delete obrasCargadas;
delete datos_xml;
// muestro las obras
verObras();
} else {
// si no se a cargado bien...
// aquí las sentencias en caso de error
// durante la carga
trace("fallo en la carga");
}
}
// esta función es la que va ha convertir
// cada nodo en un objeto con propiedades
// más fácil de controlar. Se invoca
// desde la función cargarDatos dentro del for
function pasar_a_array(nodo) {
// defino el objeto
var objetoObra = new Object();
// atributos->matriz de atributos del nodo
var atributos = nodo.attributes;

objetoObra.nombre = atributos.nombre;
objetoObra.comitente = atributos.comitente;
objetoObra.ubicacion = atributos.ubicacion;
objetoObra.o_year = Number(atributos.o_year);
objetoObra.id = Number(atributos.id);
// finalmente, añado el objeto al array
obras_array.push(objetoObra);
}

function mostrarID(j:Number) {
var num = j + 1;
var tf = new TextFormat();
tf.size =10;
tf.color=rgb;
tf.font="Arial";
obj=_root.createEmptyMovieClip("Obra"+num, _root.getNextHighestDepth());
obj.createTextField("txt", this.getNextHighestDepth(),0,0,472,20);

obj.txt.autoSize;
obj.txt.selectable=false;
obj.txt.setNewTextFormat(tf);
obj.txt.text= obras_array[j].id;
obj.txt.embedFonts=true;
return obj;
}
function verObras() {
obras = "";
for (var i = 0; obras_array[i]; i++) {
obra= mostrarID(i);
obra._x=2;
obra._y=45+(20*i);
}
}
datos_xml.load("obras.xml");
stop();


el tema es que desaparece todo cuando modifico la parte en negrita :
obj=_root.content_mc.createEmptyMovieClip("Obra"+num, _root.content_mc.getNextHighestDepth());
obj.createTextField("txt", this.getNextHighestDepth(),0,0,472,20);

alguien sabe adonde esta mi error?
saludos!