Hola a todos,
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");