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>"; 