Alguna persona puede revisar este código, sólo unos minutos y decirme como podría agregarle al XML enlace a url externa, para cada una de las fotos que carga al SWF con ActionScript2? He probado recomendaciones en cristalab de enlaces, pero ninguna escritura me coge el script bien! Son 2 archivos un xml y otro swf exportado vía AS2.
Les agradezco si se toman un momento!! Gaby
Código XML :
***XML*** <?xml version="1.0" encoding="UTF-8"?> <root> <transicion>fade</transicion> <movimiento>rebote</movimiento> <diapositivas> <diapositiva><![CDATA[slideshow4_IMG/_01.jpg]]></diapositiva> <diapositiva><![CDATA[slideshow4_IMG/_02.jpg]]></diapositiva> <diapositiva><![CDATA[slideshow4_IMG/_03.jpg]]></diapositiva> <diapositiva><![CDATA[slideshow4_IMG/_04.jpg]]></diapositiva> <diapositiva><![CDATA[slideshow4_IMG/_05.jpg]]></diapositiva> <diapositiva><![CDATA[slideshow4_IMG/_06.jpg]]></diapositiva> </diapositivas> </root>
Código ActionScript :
***SWF*** import mx.transitions.Tween; import mx.transitions.easing.*; //-- Variables iniciales --// var frames:Number = 24;//Numero de frames que se vera cada diapositiva var sld_x:Number = 10;//Posicion en X del Slide var sld_y:Number = 10;//Posicion en Y del Slide var sld_w:Number = Stage.width - 20;//Ancho del Slide var sld_h:Number = Stage.height - 20;// Alto del Slide var sld_mask:Boolean = true;// Alto del Slide var aleatorio:Boolean = false;//Indica si es aleatorio var ciclico:Boolean = true;//Indica si se tiene repite al llegar al final var transicion:String = "fade";//Tipos de transicion /** transicion * * arriba .- movimiento hacia arriba * abajo .- movimiento hacia abajo * izquierda .- movimiento haca la izquierda * derecha .- movimiento hacia la derecha * zoomv .- amplificado verticalmente * zoomh .- amplificado horizontalmente * zoom .- amplificado * fade .- desvanecido * none .- nunguna animacion * **/ var movimiento:String = "elastico";//Tipos de movimiento /** movimiento * * retroceso * rebote * elastico * remarcado * normal * **/ //-- Varialbles internas --// // cargoDiapositivas .- array de los MCs que contendran las diapositivas var cargoDiapositivas:Array; // index .- indica la diapositiva actual var index:Number = -1; // loading .- indica el numero de recusos cargados var loading:Number = 0; // cargador .- se usara para cargar las diapositivas var cargador:MovieClipLoader = new MovieClipLoader(); cargador.addListener(this); // slideshow .- MC que contendra todo el slideshow var slideshow:MovieClip; //-- Diapositivas a cargar --// var misDiapositivas:Array = new Array(); var lista_xml:XML = new XML(); lista_xml.ignoreWhite = true; lista_xml.onLoad = function(ok:Boolean):Void { if( ok )//Si se cargo correctamente { var aux:XMLNode; for(var j in lista_xml.firstChild.childNodes) { switch( lista_xml.firstChild.childNodes[j].nodeName ) { case "transicion": transicion = lista_xml.firstChild.childNodes[j].firstChild.nodeValue; break; case "movimiento": movimiento = lista_xml.firstChild.childNodes[j].firstChild.nodeValue; break; case "diapositivas": aux = lista_xml.firstChild.childNodes[j]; break; } } for( var i:Number = 0, l:Number = aux.childNodes.length; i < l; i++ ) { misDiapositivas.push(aux.childNodes[i].firstChild.nodeValue); } cargarDiapositivas(); } else trace("No se pudo cargar el XML"); }; lista_xml.load("lista.xml"); //-- Clips de trabajo y Carga --// function cargarDiapositivas( Void ):Void { this.slideshow = this.createEmptyMovieClip( "slideshow" , this.getNextHighestDepth() ); //Creamos el clip que contendra los limites del slideshow this.slideshow.createEmptyMovieClip("bound_mc", 0); this.setArea( this.slideshow.bound_mc, this.sld_w, this.sld_h ); //Enmascaramos el slideshow this.slideshow.setMask( this.sld_mask ? this.slideshow.bound_mc : null ); //Posicionamos this.slideshow._x = this.sld_x; this.slideshow._y = this.sld_y; //Variables inciales this.slideshow.owner = this; this.slideshow.count = this.frames; this.cargoDiapositivas = new Array(); for (var i:Number = 0, l:Number = this.misDiapositivas.length; i < l; i++) { //creamos un MC dentro de slideshow y lo colocamos en el array this.cargoDiapositivas[i] = this.slideshow.createEmptyMovieClip( "slide_" + i , i + 1); //creamos un MC dentro del MC previamente creado, en el cargamos la diapositiva this.cargador.loadClip(this.misDiapositivas[i], this.cargoDiapositivas[i].createEmptyMovieClip("clip", 0)); } //Creamos un TextField para mostrar mensajes this.slideshow.createTextField("texto_txt", this.slideshow.getNextHighestDepth(), this.sld_w / 2 - 100, this.sld_h - 22, 200, 22); //Le damos formato al texto var format:TextFormat = new TextFormat(); format.align = "center" format.bold = true; format.font = "Arial"; format.color = 0x888888; format.size = 11; this.slideshow.texto_txt.setNewTextFormat( format ); this.slideshow.texto_txt.selectable = false; //Colocamos el mensaje de carga //this.slideshow.texto_txt.text = "Cargando..."; } //Funcion que se ejecutara cuando esten cargados todos las diapositivas function startSlideShow( Void ):Void { //Inicia el slideshow slideshow.onEnterFrame = function( Void ):Void { //Evaluamos si han transcurrido los frames indicados if ( this.count >= this.owner.frames ) { //Si es asi, ejecutamos la funcion "cambiar" this.count = 0; this.owner.cambiar(); } else this.count++; } } //-- Eventos del MovieClipLoader --// function onLoadInit( target:MovieClip ):Void { //Hacemos invisible target._parent._visible = false; //Centramos target._parent._x = target._parent._parent.bound_mc._width / 2; target._parent._y = target._parent._parent.bound_mc._height / 2; target._x = target._width / -2; target._y = target._height / -2; //Si ya se cargo todo, podemos inciar if( (++loading) >= cargoDiapositivas.length ) { startSlideShow(); } } //-- cambiar --// function cambiar( Void ):Void { if( aleatorio )//Si es aleatorio { //Generamos un numero aleatorio var randome = rand( cargoDiapositivas.length, index ); //Aplicamos la transicion interpolar( cargoDiapositivas[index], cargoDiapositivas[randome] ); //Actualizamos el index index = randome; } else { //Creamos una variable la igualamos con el index y luego incrementamos el index var actual = index++; if( index >= cargoDiapositivas.length )//Si llegamos al final { if( ciclico )//Si es ciclico { index = 0;//regrsamos el index al incio } else//Si no { delete slideshow.onEnterFrame;//Detenemos el slideshow } } //Aplicamos la transicion interpolar( cargoDiapositivas[ actual ], cargoDiapositivas[ index ] ); } //Trace //this.slideshow.texto_txt.text = (index + 1) +" de "+ cargoDiapositivas.length; } //-- Efectos --// function interpolar( ini:MovieClip, fin:MovieClip):Void { //Colocamos a "fin" en el nivel mas alto fin.swapDepths(cargoDiapositivas.length); // ease .- variable que contiene la funcion de movimiento var ease:Function = StringToEasing( movimiento ); //Elegimos la transicion switch(transicion) { case "arriba": CambioArr( ini, fin, ease ); break; case "abajo": CambioAbj( ini, fin, ease ); break; case "izquierda": CambioIzq( ini, fin, ease ); break; case "derecha": CambioDer( ini, fin, ease ); break; case "zoomv": CambioZoomH( ini, fin, ease ); break; case "zoomh": CambioZoomV( ini, fin, ease ); break; case "zoom": CambioZoom( ini, fin, ease ); break; case "fade": CambioFade( ini, fin, ease ); break; //Si no hay ninguna transicion case "none": default: fin._visible = true; ini._visible = false; break; } } //desvanecimiento function CambioFade( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_alpha", ease, 0, 100, 1.5, true); var aux:Tween = new Tween(ini, "_alpha", ease, 100, 0, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } //ampliacion function CambioZoom( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_xscale", ease, 0, 100, 1.5, true); new Tween(fin, "_yscale", ease, 0, 100, 1.5, true); new Tween(ini, "_xscale", ease, 100, 0, 1.5, true); var aux:Tween = new Tween(ini, "_yscale", ease, 100, 0, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } //ampliacion horizontal function CambioZoomH( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_yscale", ease, 0, 100, 1.5, true); var aux:Tween = new Tween(ini, "_yscale", ease, 100, 0, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } function CambioZoomV( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_xscale", ease, 0, 100, 1.5, true); var aux:Tween = new Tween(ini, "_xscale", ease, 100, 0, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } function CambioDer( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_x", ease, fin._width / -2, fin._parent.bound_mc._width / 2, 1.5, true); var aux:Tween = new Tween(ini, "_x", ease, ini._parent.bound_mc._width / 2, ini._parent.bound_mc._width + (ini._width / 2), 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } function CambioIzq( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_x", ease, fin._parent.bound_mc._width + (fin._width / 2), fin._parent.bound_mc._width / 2, 1.5, true); var aux:Tween = new Tween(ini, "_x", ease, ini._parent.bound_mc._width / 2, ini._width / -2, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } function CambioArr( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_y", ease, fin._parent.bound_mc._height + (fin._height / 2), fin._parent.bound_mc._height / 2, 1.5, true); var aux:Tween = new Tween(ini, "_y", ease, ini._parent.bound_mc._height / 2, ini._height / -2, 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } function CambioAbj( ini:MovieClip, fin:MovieClip, ease:Function ):Void { //Hacemos visibles los clips fin._visible = ini._visible = true; //Generamos las Tween new Tween(fin, "_y", ease, fin._height / -2, fin._parent.bound_mc._height / 2, 1.5, true); var aux:Tween = new Tween(ini, "_y", ease, ini._parent.bound_mc._height / 2, ini._parent.bound_mc._height + (ini._height / 2), 1.5, true); //Al finalizar la Tween aux.onMotionFinished = function( o ) { //Colocamos invisible el movieclip ini o.obj._visible = false; } } //-- Utilerias --// //Genera numeros aleatorios de 0 a sup, excluye a norep function rand( sup:Number, norep:Number ):Number { norep = ( norep == undefined ) ? -1 : norep; var aux:Number; do { aux = Math.floor(Math.random() * sup); } while( aux == norep && sup > 1); return aux; } //Dibuja un cuadrado en clip, de ancho w y alto h function setArea( clip:MovieClip, w:Number, h:Number, color:Number, alpha:Number ):Void { //Dibujamos un cuadrado clip.clear(); clip.beginFill( color?color:0, alpha?alpha:0 ); clip.moveTo( 0, 0 ); clip.lineTo( w, 0 ); clip.lineTo( w, h ); clip.lineTo( 0, h ); clip.endFill(); } //toma una cadena "aceleracion" y regresa una funcion de easing function StringToEasing( aceleracion:String ):Function { switch( aceleracion ) { case "retroceso": return Back.easeOut; break; case "rebote": return Bounce.easeOut; break; case "elastico": return Elastic.easeOut; break; case "remarcado": return Strong.easeOut; break; case "normal": default: return Regular.easeOut; break; } }
ANEXO*** http://foros.cristalab.com/galeria-con-carga-dinamica-en-flash-+-scroll-bar-+-links-t67925/