Antes que nada, quiero agradecer a los clabers la ayuda que brindáis a toda la comunidad de programadores y diseñadores. Como recien llegado a Actionscript desde el mundo del diseño, me quito el sombrero ante la tremenda ayuda que esta web supone para los novatos como yo. Chapeau!
Y ahora, el problema en sí. Estoy intentando crear una videogalería dinámica, que cargue toda la información y rutas de los .flv a través de un XML. Básicamente, consiste de un reproductor y al lado un scroll lateral vertical con los thumbnails de los videos.
Hasta el momento, siguiendo infinidad de tutoriales y posts, todo ha ido bien: he creado un reproductor personalizado que carga los videos a traves de un NetStream, he creado varios MC que recogen los .jpegs que contiene un XML y los he colocado en el escenario.
Ahora bien, cuando intento dar a estos MC un evento de onPress para que reproduzcan el video correspondiente, resulta que todos los thumbnails enlazan al ultimo video del xml. x
He realizado varias búsquedas y encontrado posts con el mismo problema, pero tras intentar las varias soluciones propuestas no he conseguido nada.
Ahí va el codigo, lo comento para que esté más claro:
Código ActionScript :
//// cargo el XML var thumbs_xml:XML= new XML(); thumbs_xml.ignoreWhite=true; thumbs_xml.onLoad=function(){ var thumbs:Array= this.firstChild.childNodes // creo el contenedor de los thumbnails: thumbs_mc var thumbs_mc:MovieClip =thumbGallery.thumbPanel.createEmptyMovieClip("allThumbs",this.getNextHighestDepth()); thumbs_mc.setMask(thumbGallery.thumbPanel.maskMc); // inicio el bucle que creará los thumbnails y obtendrá los valores del Array del XML for (i=0; i<thumbs.length; i++){ var jpeg:String = thumbs[i].attributes.url; // recogo la variable url, el .jpeg var vid:String= thumbs[i].attributes.video; //recogo la variable video, el .flv var y_distance:Number= 50*i; var y_total= y_distance+50; createThumb(jpeg); // llamo a la función que crea los MC que contendrán los .jpegs //// EL PRESS///// thumbs_mc.onPress=function(){ ns.play(vid); /// llamo a la función play del NetStream, y le paso el valor de la ruta del video } } function createThumb(ruta:String){ ///creo un MovieClip vacio que contendrá el jpeg img_thumbnail var img_thumbnail:MovieClip=thumbs_mc.createEmptyMovieClip("img(i+1),thumbs_mc.getNextHighestDepth()); img_thumbnail._y= y_distance; //para cargar la miniatura definimos un objeto MovieClipLoader y un objeto detector de eventos var mi_mcl:MovieClipLoader = new MovieClipLoader(); var miListener:Object = new Object(); mi_mcl.addListener(miListener); // cargamos la imagen mi_mcl.loadClip(jpeg,img_thumbnail); } } ////cargo el xml thumbs_xml.load("thumbs_videos_local.xml");
-----------------------------------------------------------------
el xml dice así:
Código XML :
<?xml version="1.0" encoding"ISO-8859-1"?> <thumbs> <thumb url="thumbs/thumb_1.jpg" video="videos/nervo_flash_zune_03.flv"/> <thumb url="thumbs/thumb_2.jpg" video="videos/nervo_flash_zune_04.flv"/> </thumbs>
---------------------------------------------------------------
Creo haber entendido que el problema no es del rollOver en sí, si no de que el bucle for, por su ejecución casi inmediata, sólo guarda el último valor "i", por lo tanto el último valor del XML. En el momento de crear los thumbnails no hay problema, pero supongo que cuando el onPress llega a la variable "i" ésta ya ha sido reemplazada por otro valor. O yo que sé...
Otro problema que tengo es que el onPress sólo puedo hacerlo sobre thumbs_mc,el contenedor con los mc de los thumbnails, y no sobre los diferentes thumbnails. El problema creo que viene de la misma parte, ya que cuando intento hacer un trace de la ruta de los mc con los thumbnails, me sale undifined. Seguramente se debe también al valor de "i" tras el bucle for.
He intentado crear variables generales qur recojan el valor de i, pero nada, no lo consigo. También he leído algo de la funcion Init del MovieClip Loader, y tampoco.
Creo que la solución va por ahí, pero sin vuestra ayuda lo veo crudo. Si alguien tiene una idea de lo que pasa, por favor ilustradme!!
Muchas gracias de antemano,
Toni