Tengo más de una semana rompiéndome la cabeza con un script en AS. Soy muy nuevo en AS así que de ante mano pido disculpa por mis errores y lo largo de este post.
Estoy sacando datos desde archivos xml para ser cargados en flash, los datos son textos e imágenes. Mi script funciona a la perfección sacando los datos y con los eventos siempre y cuando saco solo textos. El problema surge a la hora de querer asignarle eventos a al movieclip que carga las imagenes que estoy sacando de los xml.
El funcionamiento del Script es el siguiente:
-Crear un menú con botones (main_btn el cual es instancia de proyecto_item)
-Al tocar un boton se cambia la información correspondiente a la descripción (content_txt el cual es instancia de infobox_mc) y también se debería cambiar la información correspondiente a las imagenes thumbs_mc lo cual no sucede ya que la función que maneja esos eventos: DisplayInfo() está configurada para interactar con text o htmlText y no con movieclip.
Además tengo otro elemento llamado thumbs_txt el cual carga los nombres de las imagenes, lo tengo en el sript solo con fines de pruebas y para asegurarme de que las variables están siendo pasadas correctamente.
Bien, aquí copiare el Script completo (disculpen) ... ... La idea es poder asignarle los eventos a las imagenes y así cambien a la hora de tocar un boton.
Código:
Código:
function DisplayInfo(){ menu_mc._visible = true; infobox_mc._visible = true; infobox_mc.content_txt.htmlText = this.location_text; infobox_mc.thumbs_txt.htmlText = this.location_img; //infobox_mc.thumbs_mc = location_thumbs; } //Variables para configurar el menú donde se cargan los botones var item_spacing = 28; // how far menu items are spaced veritcally var item_count = 0; // counts menu items as they are added from the XML var thumb_spacing = 40; function loadXML(loaded) { if (loaded) { //Definir Array para buscar dentro del xml var total = this.firstChild.childNodes.length; totalnodos_txt.text = total; //Primer bucle para sacar datos de los proyectos for (p=0; p<total; p++) { var id = this.firstChild.childNodes[p].childNodes[0].firstChild.nodeValue; var cliente = this.firstChild.childNodes[p].childNodes[1].firstChild.nodeValue; var proyecto = this.firstChild.childNodes[p].childNodes[2].firstChild.nodeValue; var descripcion = this.firstChild.childNodes[p].childNodes[3].firstChild.nodeValue; // Crear un menu item movie clip como instanacia de menu_mc var item_mc = menu_mc.attachMovie("proyecto_item","item"+item_count, item_count); item_mc._y = item_count * item_spacing; item_count++; // Asginar valores: Etiquetas de los botones item_mc.proyecto_txt.text = proyecto; //Configurar el evento del boton item_mc.main_btn.onRelease = DisplayInfo; //Definir Array para buscar dentro del xml var detalles_total = this.firstChild.childNodes[p].childNodes[4].childNodes.length; //Segundo bucle (es aninado del primero) para sacar datos de los detalles e imagenes de los proyectos for (d=0; d<detalles_total; d++) { var det_id = this.firstChild.childNodes[p].childNodes[4].childNodes[d].childNodes[0].firstChild.nodeValue; var det_proyectoid = this.firstChild.childNodes[p].childNodes[4].childNodes[d].childNodes[1].firstChild.nodeValue; var det_titulo = this.firstChild.childNodes[p].childNodes[4].childNodes[d].childNodes[2].firstChild.nodeValue; var det_descripcion = this.firstChild.childNodes[p].childNodes[4].childNodes[d].childNodes[3].firstChild.nodeValue; //Asignar valores: Descripción de los proyectos detalle = "<b>"+det_titulo+"</b> <br />"+det_descripcion+" <br /><br />"; item_mc.main_btn.location_text = item_mc.main_btn.location_text + detalle; //Sacar las imagenes var img_id = this.firstChild.childNodes[p].childNodes[5].childNodes[d].childNodes[0].firstChild.nodeValue; var img_thumbs = this.firstChild.childNodes[p].childNodes[5].childNodes[d].childNodes[1].firstChild.nodeValue; var img_titulo = this.firstChild.childNodes[p].childNodes[5].childNodes[d].childNodes[2].firstChild.nodeValue; //Aquí está el problema con los eventos //Construir los movie clip para cargar las imagenes dentro de infobox_mc.thumbs_mc //las cuales deberían cambiar al tocar un boton con le nombre del proyecto pero no cambian! var currentThumb_mc = infobox_mc.thumbs_mc.createEmptyMovieClip("thumbnail_mc"+d,d); currentThumb_mc = currentThumb_mc; currentThumb_mc._x = d * thumb_spacing; currentThumb_mc.createEmptyMovieClip("thumb_container",0); currentThumb_mc.thumb_container.loadMovie(img_thumbs); //currentThumb_mc.image = img_thumbs; //currentThumb_mc.onRelease = function(){ //image_mc.loadMovie(this.image); //} //Esto es para mostrar los nombres de las imagenes en un campo htmlText //y así asegurarme de que se estan sacadno las variables correcta de los xml imagen = ""+img_thumbs+" <br />"; //Asignar valores: Nombres de las imagenes en htmlText item_mc.main_btn.location_img = item_mc.main_btn.location_img + imagen; } //Defino esta variable fuera del bucle anidado para indicar que para el siguiente //ciclo del bucle empieze en blanco. infobox_mc.thumbs_mc = ""; } } else { trace("file not loaded!"); } } xmlData = new XML(); xmlData.ignoreWhite = true; xmlData.onLoad = loadXML; xmlData.load("portafolio2.xml");