Comunidad de diseño web y desarrollo en internet online

Componente List de Flash8

Citar            
MensajeEscrito el 24 May 2011 02:15 pm
Saludos listeros:
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>";

Por dixancarballo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 May 2011 06:45 pm
Saludos nuevamente, ya encontre la solución
hice lo siguiente:

1ro: Quite la función "envia" ya que me percate que no cumple ninguna función.

2do: agrege una propiedad mas al Item cuando se crea lista.
Codigo anterior
misDatos.addItem({label:letra.childNodes[i].attributes.titulo, data:letra.childNodes[i].attributes.src});


Codigo arreglado
misDatos.addItem({label:letra.childNodes[i].attributes.titulo, data:letra.childNodes[i].attributes.contenido, src:letra.childNodes[i].attributes.src});


3ro: Agregue tres variables a la hora de hacer click en una item de la lista.
Codigo anterior
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();
}
};


Codigo arreglado
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();
titulo = lista.selectedItem.label;
contenido = lista.selectedItem.data;
archivo = lista.selectedItem.src;
}
};


y listo con esto ya logré lo que queria, que al seleccionar un item de la lista me envie al SWF cargado las tres variables con sus respectivos datos para poder utilizarlas en él.

Muchas gracias por los que visitaron aunque no dejaron sugerencias.

Por dixancarballo

2 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.