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/


 
  
			 
					 
    
  
			