Cargar imagen desde XML cuando presiono el botón
Hola chicos, he buscado por el foro y por google pero no encuentro esto específicamente.
El tema es el siguiente:
Un generador de noticias en xml y AS.
Cada noticia genera un botón pero cuando presiono el botón de cada noticia solo me carga los datos de la última generada incluso estando dentro del for y da igual el boton que apriente que siempre carga la última.
la cuestión es que dentro del for, si que las carga todas, pero cuando le das al botón solo carga la última.
Por ejemplo, en el supuesto que hayan 5 noticias, flash carga 5 botones con su texto y demás pero cuando aprieto el boton 3 o el 2 me carga siempre la imagen de la última noticia, en este caso la 5.
El quiz de la cuestión esta en la variable "img" y el "loadclip", que debería cargar la imágen de la noticia[d] y carga siempre la 5 que es la última.
¿En que me estoy equivocando? Os dejo el código :) Está simplificado.
<code>function loadnews() {
var d:Number = 0;
var menuItem:String = menunews.firstChild.firstChild.nextSibling.childNodes;
var container:MovieClip= this.createEmptyMovieClip("container", 19);
for (d; d<menuItem.length; d++) {
var header = menuItem[d].firstChild.attributes.header;
var texto = menuItem[d].firstChild.nextSibling.attributes.texto;
var img = menuItem[d].firstChild.nextSibling.attributes.img;
var btnnews:MovieClip = container.attachMovie("item_mc", "item_mc"+d, 10+d);
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
btnnews._x = 310;
btnnews._y = d*(btnnews._height);
btnnews.textobtn_mc.header_txt.text = header;
btnnews.textobtn_mc.p_txt.text = texto;
btnnews.onRelease = function() {
var nextensa:MovieClip = attachMovie("noticiabig_mc", "noticiabig_mc"+d, 30+d);
mcLoader.loadClip(img, nextensa.imgcentral_mc);
};
}
}</code>
Un saludo y gracias de antemano!
isma
Supongo que estes con ActionScript 2.
Lo suyo es crear una variable para el boton, en la cual, en el onRelease te refieras a él. Es normal que te cargue solamente la última, dado que en la variable 'img' es el último indice el que queda, tal y cómo lo tienes; siempre cargas 'img'.
<code>var boton:MovieClip = new MovieClip('el attach o lo que sea');
for (var d=0<; d<longitudBotones; d++){
boton.image = menuItem[d].firstChild.nextSibling.attributes.img;
boton.onRelease = function ()
{
mcLoader.loadClip(this.image, nextensa.imgcentral_mc);
}
}</code>
A ver si te sirve el ejemplo.
Un saludo.
script
Perfecto Isma!muchas gracias, lo acabo de probar y funciona a la perfección.
Sabía que tenía que ver con algo del this, pero no se me había ocurrido plantear la variable con el objeto boton.
Me hubiese roto la cabeza y no lo hubiese encontrado ni sacado nunca. ¡¡Como me mola este foro!!
Ahora supongo que este proceso valdrá para todos los datos que quiera cargar desde el botón, ya sea imágenes, texto, etc...
Muchas thankius!