Quiero hacer una lista desplegable con el compnente List que trae el flash. Hasta aqui todo ok, buscando en google encontre como llenar la lista desde un archivo XML, e incluso logré hacer que cuando seleccione un elemento de la lista me llame a un archivo swf, hasta aqui todo bien amigos.
Donde tengo dudas es para lo siguiente:
- Quiero que cuando llame al archivo SWF mediante la selección en la lista, pasar tres variables (titulo, contenido y src) al mismo desde la película principal, estas variables almacenarán datos alojados en el mismo archivo XML que utilizo para llenar el componente List y serán utilizadas en el archivo SWF cargado.
Nota: el archivo SWF contiene tres elementos, dos campos de textos y un botón.
campo de texto 1 = variable 1 (titulo)
campo de texto 2 = variable 2 (contenido)
botón = variable 3 (src)
Espero se me entienda hasta aqui.
este es el archivo XML
Código XML :
<?xml version="1.0" enAoding="iso-8859-1"?> <letra id="A"> <palabra titulo="Aspectos económicos del desastre (Programa de Entrenamiento para el manejo de Desastres)" src="001.swf" contenido="La idea de la Ecología Pública ha emergido recientemente en respuesta al gran incremento en las disparidades sobre la percepción de las preocupaciones políticas, sociales y medioambientales." /> <palabra titulo="Desastres y desarrollo (Programa de Entrenamiento para el manejo de Desastres)" src="002.swf" contenido="De particular interés son los procesos que generan, evalúan y aplican conocimientos en áreas políticas, sociales y medioambientales."/> <palabra titulo="Desastres y medio ambiente (Programa de Entrenamiento para el manejo de Desastres)" src="003.swf" contenido="La ecología pública ofrece la forma de enmarcar problemas de sostenibilidad, dinámicas en comunidades y preocupaciones sociales, fauna, flora y todo aquello que sea parte de la calidad ambiental y sean bienes públicos. Los procesos tratan de descubrir y acordar el significado de estos bienes para poder realizar a partir de ellos decisiones y acciones de dominio público."/> <palabra titulo="Evaluación de desastres (Programa de Entrenamiento para el manejo de Desastres)" src="004.swf" contenido="Adelantar programas intensos y continuos de concienciación y educación ambientales: programar actividades permanentes de concienciación ambiental."/> <palabra titulo="Introducción a las amenazas (Programa de Entrenamiento para el manejo de Desastres)" src="005.swf" contenido="Construir ambientes urbanos amables y estéticos: la ecología urbana, la ciudad para vivir con respeto y normas de control del medio ambiente urbano."/> </letra>
este es el codigo de la pelicula principal
Código ActionScript :
fscommand("showmenu", false); fscommand("allowscale", false); fscommand("fullscreen", true); stop(); cerrar.onRelease = function() { _root.btn_servicios.regresar._visible = true; _root.contenedor.unloadMovie(); }; //Cargamos el XML listado = new XML(); listado.ignoreWhite = true; //Permite caracteres tradicionales como letras con tilde la ñ, etc. System.useCodepage = true; listado.onLoad = function(success) { if (success) { //Shortcuts letra = listado.firstChild; num_total = listado.firstChild.childNodes.length; //titulo = "Esta es la variable TITULO de INF_BASICAS"; //Creamos y llenamos la lista crearLista(); } else { trace("No se pudo cargar la lista de listado"); } }; listado.load("inf_basicas.xml"); /////////////////////////////////////////////////////////////////// /////////////////////////// FUNCIONES /////////////////////////// /////////////////////////////////////////////////////////////////// function crearLista() { //Posicionamos la lista de las listado lista.setSize(787, 314); //Llenamos la lista con las listado misDatos = new Array(); lista.dataProvider = misDatos; for (var i = 0; i<num_total; i++) { //(para las primeras lineas del xml label:letra.childNodes[i].firstChild.firstChild.nodeValue) //si se quiere acceder a la segunda lista solo debes agregar (nextSibling) firstChild.nextSibling.firstChild misDatos.addItem({label:letra.childNodes[i].attributes.titulo, data:letra.childNodes[i].attributes.src}); } //Ordenamos los datos misDatos.sortItemsBy("label", "ASC"); } function envia(){ //declaro las variables titulo = new Array(); contenido = new Array(); archivo = new Array(); //cargamos los datos for (var k = 0; k<num_total; k++) { titulo = letra.childNodes[k].attributes.titulo; contenido = letra.childNodes[k].attributes.contenido; archivo = letra.childNodes[k].attributes.src; } } var alCambiar:Object = new Object(); alCambiar.change = function(evt_obj:Object) { // Your code here. trace("Value changed to: "+evt_obj.target.value); if (evt_obj.target.value != null) { changeFunct(lista.selectedItem); envia(); } }; //Listener lista.addEventListener("change", alCambiar); function changeFunct(item) { clip_mc = this.createEmptyMovieClip("contenedor", 3); clip_mc.loadMovie("carga.swf"); this.onEnterFrame = function() { if (clip_mc.getBytesLoaded() != 0 && clip_mc.getBytesLoaded() == clip_mc.getBytesTotal()) { trace("cargo"); //aquí va el número del frame dode se quiere ir clip_mc.gotoAndPlay("carga"); delete this.onEnterFrame; } }; }
Este es el codigo del archivo SWF cargado
stop();
Código ActionScript :
cerrar2.onRelease = function (){ _root.contenedor.unloadMovie("carga.swf"); } mensaje2_txt.htmlText = "<p align='justify'><font color='#000000' size='12'>" + _root.contenido + "</font></p>"; titulo_txt.htmlText = "<p align='justify'><font color='#000000' size='12'>" + _root.titulo + "</font></p>";