Problemas onRollOver botón-noticia en Flash con XML
Hola Chicos, estoy un poco desesperado porque no encuentro la solución...
http://www.jbestudiocreativo.com/inicio_torres.jpg
Pues lo visto es un .fla donde se ca rga un XML con noticias dinámicamente y cada una es un boton que cuando haces el rollOver sobre una de ellas sale la imagen previa en la parte superior como podeis apreciar (si, esa rojita pequeñita,xDDD).
El problema es que haciendo el rollOver con un trace por las 3 noticias siempre sale la misma como si fuese el mismo boton pero son tres diferentes.
Conclusion, los tre botones tienen tres imágenes diferentes en el XML pero siempre recoge la misma y no tengo ni zorra del porque.
Os dejo la funcion en AS para que le echeis un vistazo:
<code>function noticias_popup() {
attachMovie("grad_popup_mc", "grad_popup_mc1", this.getNextHighestDepth());
grad_popup_mc1._x = 860;
grad_popup_mc1._y = 121;
var myTween18:Tween = new Tween(grad_popup_mc1, "_alpha", Regular.easeInOut, 0, 100, 24, false);
myTween18.onMotionFinished = function() {
myTween18.stop();
};
menuXml = new XML();
menuXml.ignoreWhite = true;
menuXml.onLoad = function() {
var fecha:String;
var titulo:String;
var mensaje:String;
var imagen:String;
var primera_imagen:String;
var menuItem = menuXml.firstChild.childNodes;
for (var i = 0; i<menuItem.length; i++) {
titulo = menuItem[i].firstChild.firstChild.nodeValue;
imagen = menuItem[i].lastChild.firstChild.nodeValue;
primera_imagen = menuItem[0].lastChild.firstChild.nodeValue;
fecha = menuItem[i].attributes.fecha;
//////////////////////////////////////////////////////////////////
attachMovie("img_news_container", "img_news_container1", 999999);
img_news_container1._width = 170;
img_news_container1._height = 40;
img_news_container1._x = 868;
img_news_container1._y = 140;
var myTween19:Tween = new Tween(img_news_container1, "_alpha", Regular.easeInOut, 0, 60, 24, false);
myTween19.onMotionFinished = function() {
myTween19.stop();
};
img_news_container1.loadMovie(primera_imagen);
//////////////////////////////////////////////////////////////////
attachMovie("popupnews_mc", "popupnews_mc"+i, 9999+i);
_root["popupnews_mc"+i]._x = 865;
_root["popupnews_mc"+i]._y = 50*i;
_root["popupnews_mc"+i].textpopupnews_txt.text = titulo;
_root["popupnews_mc"+i].fecha = fecha;
//////////////////////////////////////////////////////////////////
_root["popupnews_mc"+i].boton_popupnews_btn.onRollOver = function() {
//trace(this._parent.imagen);
img_news_container1.removeMovieClip();
attachMovie("img_news_container", "img_news_container1", 999999);
img_news_container1._width = 170;
img_news_container1._height = 40;
img_news_container1._x = 868;
img_news_container1._y = 140;
var myTween20:Tween = new Tween(img_news_container1, "_alpha", Regular.easeInOut, 0, 60, 24, false);
myTween20.onMotionFinished = function() {
myTween20.stop();
};
img_news_container1.loadMovie(imagen);
};
_root["popupnews_mc"+i].boton_popupnews_btn.onRelease = function() {
trace(this._parent.fecha);
};
}
};
menuXml.load("noticias.xml");
}
</code>
Po favo!he buscado ejemplos por todas partes pero no encuentro nada por el estilo y tampoco es nada del otro mundo.
gracias de antemano.
Un saludo.
juanjobernabeu
Nadie sabe como solucionarlo? Es urgente chicos, se me acaban las ideas y se me amontona el curro por culpa de este fallo.
¿Nadie sabría porque esta pasando esto?
juandelgado
Buenas,
Lo primero que seguramente la gente no te contesta porque a nadie le gusta leerse semejante tocho de codigo. Para la proxima trata de acotar un poco el problema.
Dicho esto, yo diria que esta linea esta mal:
<code>primera_imagen = menuItem[0].lastChild.firstChild.nodeValue;</code>
que deberia ser
<code>primera_imagen = menuItem[i].lastChild.firstChild.nodeValue;</code>
Es eso?
Ventd'Aval
asocia la variable "imagen" al clip que hace el rollover... sino siempre te mostrara el ultimo valor que haya adquirido... algo asi:
<code>miclip.imagen=imagen;
miclip.onRollOver = function() {
....
img_news_container1.loadMovie(miclip.imagen);
....
}</code>
Saludos...
juanjobernabeu
Gracias tios, se que es un tocho de código enorme pero no sabía si acortarlo porque puede perderse la intenciónalidad y el objetivo.
Zarate, esa linea a mi entender creo que está bien ya que esa es la intención porque ahí quiero que muestre la imagen de la primera noticia y a no ser que interfiera con el OnRollOver no creo que haya fallo. Creo que va más por donde dice Ventd'aval, además ese script me suena bastante y no se porque, jajaja, que cateto soy joer...
Gracias y solo pueda este mediodia lo pruebo ya que ahora tengo un par de reuniones del currete (esto de ser freelance mata, todo el tema comercial me da asco, xDDDD).
Luego os cuento....y como salga bien os invito a unas beerrsss!!!!!
juanjobernabeu
Holas, he estado probando pero se sigue cascando.
En el panel salida me da este error:
<code>Error opening URL "file:///Macintosh%20HD/Users/juanjo/Documents/Sitios%20web/Torres/site/undefined"</code>
Tiene pinta de fallar el xml pero no tiene nada de especial:os pongo una porcion de una de las noticias:
<code><noticia fecha="14/04/2005">
<titulo>Texto reducido</titulo>
<mensaje>Texto reducido 2</mensaje>
<image>img_news_1.jpg</image>
</noticia></code>
Y aquí el flash modificado como dice ventd'aval:
<code>_root["popupnews_mc"+i].boton_popupnews_btn.imagen = imagen;
_root["popupnews_mc"+i].boton_popupnews_btn.onRollOver = function() {
img_news_container1.removeMovieClip();
attachMovie("img_news_container", "img_news_container1", 999999);
img_news_container1._width = 170;
img_news_container1._height = 40;
img_news_container1._x = 868;
img_news_container1._y = 140;
var myTween20:Tween = new Tween(img_news_container1, "_alpha", Regular.easeInOut, 0, 60, 24, false);
myTween20.onMotionFinished = function() {
myTween20.stop();
};
img_news_container1.loadMovie(_root["popupnews_mc"+i].boton_popupnews_btn.imagen);
};</code>
No se me ocurre que puede fallar, si el xml o el flash, ¿que creeis que es?
Ventd'Aval
Prueba con esto:
<code>_root["popupnews_mc"+i].boton_popupnews_btn.imagen = imagen;
_root["popupnews_mc"+i].boton_popupnews_btn.onRollOver = function() {
//.....
img_news_container1.loadMovie(this.imagen);
};</code>
Saludos...
juanjobernabeu
Joder Ventd'aval, que cabroncete!!!
Un palabra de 4 letras lo que puede hacer!jajjaja.
Tienes toda la razon. Ese this ha sido mi salvación, no había caido y mira que lo he probado de mil formas y no me salia.
muchas gracias tio!!!te debo dos birrillas!!!!
un saludo.
juanjobernabeu
Bueno esto ya me está dando por culo de mala manera...
Intento que coja el quiero que me muestre en otro clip el texto extenso de la noticia y pasa lo mismo solo que ahora ninguna de las opciones me da como válida.
<code>.
.
.
mensaje = menuItem[i].firstChild.nextSibling.firstChild.nodeValue;
.
.
.
_root["popupnews_mc"+i].textpopupnews_extenso_txt.mensaje = mensaje;
_root["popupnews_mc"+i].boton_popupnews_btn.onRelease = function() {
remove_all_inf();
attachMovie("noticia_extensa_mc", "noticia_extensa_mc1", 9999999);
noticia_extensa_mc1._y = 530;
noticia_extensa_mc1._x = 50;
var myTween:Tween = new Tween(noticia_extensa_mc1, "_alpha", Regular.easeInOut, 0, 60, 24, false);
myTween.onMotionFinished = function() {
myTween.stop();
};
noticia_extensa_mc1.new_extensa_txt.text = mensaje;
};</code>
Esta no funciona (me sale solo el último texto):
<code>noticia_extensa_mc1.new_extensa_txt.text = this.mensaje;
};</code>
Esta otra tampoco funciona (me da undefined):
<code>noticia_extensa_mc1.new_extensa_txt.text = _root["popupnews_mc"+i].textpopupnews_extenso_txt.mensaje;
};</code>
Prometo que es la última...