Comunidad de diseño web y desarrollo en internet online

URL EN IMAGENES ALEATORIAS CARGADAS CON XML EN AS3

Citar            
MensajeEscrito el 23 Jun 2012 10:26 am
hola a todos, ante todo gracias por su ayuda!! me salvarian de una!!
tengo un swf de 900 x 368 realizado en AS3 donde cargo imagenes aleatorias mediante un XML
y necesito que cada imagen tenga un vinculo a una url distinta.
todo funciona ok solo me falta agregar ese detalle! donde tendría que insertar el código para que al pasar sobre determinada imagen y haga click redireccione a una pagina html en la opción _self ??

mi XML es:

-----------------------------------------------------------------------------------------------------------------------------

Código :

<?xml version="1.0" encoding="utf-8"?>

<slide>

   <config>
      <!--Configuración general de la presentación-->
      <control>auto</control>
      <loop>true</loop>
      <time>5</time>
      <effect_time>1</effect_time>
      <random>true</random>
      
      <!--Configuración de la barra de progreso-->
      <preload>true</preload>
      <preload_width>400</preload_width>
      <preload_height>2</preload_height>
      
      <!--Configuración de los textos-->
      <text_font>Arial</text_font>
      <text_color>0xFFFFFF</text_color>
      <text_bold>false</text_bold>
      <text_size>26</text_size>
      <text_shadow>true</text_shadow>
      <text_pos>BR</text_pos>
      <text_margin>20</text_margin>
         
   </config>

   <images>
      <!--Lista de las imagenes-->

      <imagen src="images/lambayeque_chaparrilodge.jpg"  effect="fade"/>
      <imagen src="images/apurimac_tampumayu.jpg"  effect="fade"/>
      <imagen src="images/junin_santamaria.jpg"  effect="fade"/>
      <imagen src="images/huanuco_haciendasantacruz.jpg"  effect="fade"/>
      <imagen src="images/cusco_hotelruinas.jpg"  effect="fade"/>
      <imagen src="images/ica_casasur.jpg"  effect="fade"/>
      <imagen src="images/tingomaria-huanuco_maderaverde.jpg"  effect="fade"/>
      <imagen src="images/huancayo_lomaverde.jpg"  effect="fade"/>
      <imagen src="images/lima_hotelgirasoles.jpg"  effect="fade"/>
      <imagen src="images/hotelgrandmare.jpg"  effect="fade"/>
      <imagen src="images/lima_haciendalaflorida.jpg"  effect="fade"/>
      <imagen src="images/ica_wasipunko.jpg"  effect="fade"/>
      <imagen src="images/arequipa_casitasdelcolca.jpg" effect="fade"/>
      <imagen src="images/ica_vinasqueirolo.jpg"  effect="fade"/>
      <imagen src="images/arequipa_colcalodge.jpg"  effect="fade"/>
   
   </images>
   
</slide>


-----------------------------------------------------------------------------------------------------------------------------

en el unico frame del .fla esta el codigo:

Código ActionScript :

var mySlideShow:slideShow = new slideShow(this, "images.xml", stage.stageWidth, stage.stageHeight);
mySlideShow.start();


todos los parámetros estan en un archivo llamado: slideShow.as

Código ActionScript :

package {
   
   //---Imports
   import flash.display.DisplayObjectContainer;
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.text.TextField;
   import flash.text.TextFormat;
   import flash.text.Font;
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.events.*;
   import flash.utils.Timer;
   import flash.filters.DropShadowFilter;
   import fl.controls.ProgressBar;
   import fl.controls.ProgressBarMode;
   
   import gs.TweenLite;
   import gs.easing.*;
   
   import slideTransitions;
   
   public class slideShow extends Sprite{
      
      private var _cont:DisplayObjectContainer;
      private var _xmlSrc:String;
      private var _slideXML:XML;
      private var _config:Object;
      private var _slideTimer:Timer;
      private var _imageNumber:uint;
      private var _play:Boolean;
      private var _keyLeft:Boolean;
      private var _keyRight:Boolean;
      private var _ancho:Number;
      private var _alto:Number;
      private var _buttons:Object;
      private var _added:Boolean;
      private var _orderArray:Array;
      
      //---Función constructora
      public function slideShow(cont:DisplayObjectContainer, xmlSrc:String, ancho:Number, alto:Number, buttons:Object = null):void{
         
         cont.mouseEnabled = false;
         cont.mouseChildren = false;
         
         _cont = cont;
         _xmlSrc = xmlSrc;
         _imageNumber = 0;
         _config = new Object();
         _play = false;
         _keyLeft = false;
         _keyRight = true;
         _ancho = ancho;
         _alto = alto;
         _buttons = buttons;
         _orderArray = new Array();
         
         //---Crear la máscara del contenedor
         var contMask:Sprite = new Sprite();
         
         with(contMask.graphics){
            
            beginFill(0xCCCCCC, 1);
            drawRect(0, 0, 900, 368);
            endFill();
            
         }
         
         contMask.x = _cont.x;
         contMask.y = _cont.y;
         
         _cont.mask = contMask;
         
         _cont.parent.addChild(contMask);
         
         //---Leer el XML
         loadXML();
         
      }
      
      //---Función de leer el XML
      private function loadXML():void{
         
         var requestXML:URLRequest = new URLRequest(_xmlSrc);
         var urlToLoad:URLLoader = new URLLoader();
         
         //---Cuando termine de cargar
         urlToLoad.addEventListener(Event.COMPLETE,
                              
            function(evt:Event):void{
               
               _slideXML = new XML(URLLoader(evt.target).data);
               
               //---Guardar las opciones de configuración
               storeConfigOptions();               
               
            }                              
                              
         );
         
         urlToLoad.load(requestXML);         
      }
      
      //---Función de guardar las opciones de configuración
      private function storeConfigOptions():void{
         
         var config:XMLList = _slideXML.config.*;
         var config_tot:uint = config.length();
         
         var i:uint;
         
         for(i = 0; i < config_tot; i++){
            
            _config[config[i].name()] = config[i].toString();
            
         }
         
         //---Dar valor a variables depende de los settings
         _slideTimer = new Timer(Number(_config.time) * 1000, 1);
         _slideTimer.addEventListener(TimerEvent.TIMER, slideImages);
         
         //---Si se han mandado botones
         if(_buttons != null && _config.control == "manual"){
            
            _buttons.next.buttonMode = true;
            _buttons.prev.buttonMode = true;
            _buttons.next.addEventListener(MouseEvent.CLICK, changeImageNext);
            _buttons.prev.addEventListener(MouseEvent.CLICK, changeImagePrev);
            
         }
         
         //---Guardar el orden de las imágenes en un arreglo
         orderArrayFunction();
         
         //---Si se ha mandado a reproducir comenzar la reproducción
         if(_play){
            
            start();
            
         }
         
      }
      
      //---Función de comenzar el slideshow
      public function start():void{
         
         _play = true;
         
         if(_config.control == "auto"){
            
            slideImages();
            
         }else if(_config.control == "manual"){
            
            slideImages();
            _cont.stage.addEventListener(KeyboardEvent.KEY_DOWN, changeImage);
            
         }
         
      }
      
      //---Función de detener el slideshow
      public function stop():void{
         
         _play = false;
         
      }
      
      //---Función de detener el slideShow
      
      //---Función de crear el slide
      private function slideImages(tEvt:TimerEvent = null):void{
         
         _added = false;
         
         var images:XMLList = _slideXML.images.*;
         var imageSrc:String = images[_orderArray[_imageNumber]][email protected]();
         var imageEffect:String = images[_orderArray[_imageNumber]][email protected]();
         var effectTime:Number = Number(_config.effect_time);
         var imageText:String = images[_orderArray[_imageNumber]][email protected]();;
         var imageRequest:URLRequest = new URLRequest(imageSrc);
         var loader:Loader = new Loader();
         var progBar:ProgressBar;
         
         //---Función de borrar el preload
         var deletePreload:Function = function():void{
            
            _cont.parent.removeChild(progBar);
            
         }
         
         //---Cuando se termine de leer la imagen
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
                                         
            function(evt:Event):void{
               
               var myText:TextField = createSlideText(imageText);
               
               var myTransition:slideTransitions = new slideTransitions(_cont, loader, myText);
               var effectSprite:Sprite = myTransition.createEffect(imageEffect, effectTime);
               
               //---Añadir el sprite al contenedor
               _cont.addChild(effectSprite).name = "image" + _imageNumber;
               
               _added = true;
               
               //---Desparacer el loading
               
               if(_config.preload == "true"){
               
                  TweenLite.to(progBar, 1, {alpha:0, ease:Cubic.easeOut, onComplete:deletePreload});
               
               }
               
               //---Cargada la imagen se procede a la próxima
               
               nextFunction();
               
            }
            
         );
         
         //---Si da error la lectura
         loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
                                         
            function(evt:IOErrorEvent):void{
               
               trace("No se ha podido cargar la imagen: " + imageSrc);
               
            }
            
         );
         
         //---Al comenzar la lectura
         loader.contentLoaderInfo.addEventListener(Event.OPEN,
                                         
            function(evt:Event):void{
               
               if(_config.preload == "true"){
                  
                  progBar = new ProgressBar();
                  progBar.mode = ProgressBarMode.EVENT;
                  progBar.width = Number(_config.preload_width);
                  progBar.height = Number(_config.preload_height);
                  progBar.x = _cont.x + (_ancho - progBar.width) / 2;
                  progBar.y = _cont.y + (_alto - progBar.height) / 2;
                  progBar.source = evt.target;
                  
                  _cont.parent.addChild(progBar).name = "progBar";
                  
                  //---Aparición de la barra de loading
                  TweenLite.from(progBar, 1, {alpha:0, ease:Cubic.easeOut});
                  
               }
               
            }
                                         
         );
         
         //---Mandar a leer la imagen
         loader.load(imageRequest);
         
      }
      
      //---Función d crear los textos
      private function createSlideText(words:String):TextField{
         
         //---Crear el estilo del texto
         var textStyle:TextFormat = new TextFormat();
         
         textStyle.font = _config.text_font;
         textStyle.color = uint(_config.text_color);
         textStyle.size = Number(_config.text_size);
         textStyle.bold = Boolean(_config.text_bold);
         
         //---Crear el texto
         var slideText:TextField = new TextField();
         
         with(slideText){
            
            autoSize = "left";
            selectable = false;
            embedFonts = true;
            antiAliasType = (_config.text_embed == "true") ? "advanced" : "normal";
            text = words;
            setTextFormat(textStyle);
            
         }
         
         //---Crear la sombra         
         if(_config.text_shadow == "true"){
            
            var textShadow:DropShadowFilter = new DropShadowFilter(2);
            var filtersArray:Array = new Array();
            filtersArray.push(textShadow);
            slideText.filters = filtersArray;
            
         }
         
         //---Ubicar el texto
         var margin:Number = Number(_config.text_margin);
         
         switch(_config.text_pos){
            
            default:
            
            case "TL":
            
               slideText.x = margin;
               slideText.y = margin;
            
            break;
            
            case "TC":
            
               slideText.x = (_ancho - slideText.width) / 2;
               slideText.y = margin;
            
            break;
            
            case "TR":
            
               slideText.x = _ancho - slideText.width - margin;
               slideText.y = margin;
            
            break;
            
            case "BL":
            
               slideText.x = margin;
               slideText.y = _alto - slideText.height - margin;
            
            break;
            
            case "BC":
            
               slideText.x = (_ancho - slideText.width) / 2;
               slideText.y = _alto - slideText.height - margin;
            
            break;
            
            case "BR":
            
               slideText.x = _ancho - slideText.width - margin;
               slideText.y = _alto - slideText.height - margin;
            
            break;
            
         }
         
         //---Retornar el texto
         return slideText;
         
      }
      
      //---Función de manejar las imágenes por las teclas
      private function changeImage(evt:KeyboardEvent):void{
         
         switch(evt.keyCode){
            
            case 37:
               
               if(_keyLeft && _added && _play){
                  
                  _imageNumber--;
                  slideImages();
               
               }
            
            break;
            
            case 39:
               
               if(_keyRight && _added && _play){
                  
                  _imageNumber++;
                  slideImages();
               
               }
            
            break;
            
         }
         
      }
      
      //---Función de manejar las imágenes por botones
      private function changeImageNext(evt:MouseEvent):void{
         
         if(_keyRight && _added && _play){
         
            _imageNumber++;
            slideImages();
         
         }
         
      }
      
      //---Función de manejar las imágenes por botones
      private function changeImagePrev(evt:MouseEvent):void{
         
         if(_keyLeft && _added && _play){
                  
            _imageNumber--;
            slideImages();
         
         }
         
      }
      
      //---Función de crear el orden de las imágenes
      private function orderArrayFunction():void{
         
         var images:XMLList = _slideXML.images.*;
         var totalImages:uint = images.length();
         
         var rand:uint;
         var i:uint;
         
         _orderArray.splice(0);
         
         if(_config.random == "true"){
            
            i = 0;
            
            while(i < totalImages){
               
               rand = Math.floor(Math.random() * totalImages);
               
               if(_orderArray.indexOf(rand) < 0){
                  
                  _orderArray[i] = rand;
                  
                  i++
                  
               }
               
            }            
            
         }else{
            
            i = 0;
            
            while(i < totalImages){
               
               _orderArray[i] = i;
               i++;
               
            }
            
         }
         
      }
      
      //---Función paea procesar la próxima imagen
      
      private function nextFunction():void{
         
         //---Si el control está en automático
         if(_config.control == "auto" && _play){
            
            _imageNumber++;
            
            if(_imageNumber == _orderArray.length){
               
               if(_config.loop == "true"){
               
                  _imageNumber = 0;
                  
                  _slideTimer.start();
               
               }
               
            }else{
               
               _slideTimer.start();
               
            }
         
         //---Si el control está por las teclas
         }else{
            
            if(_imageNumber == _orderArray.length - 1){
               
               _keyRight = false;
                  
               
            }else if(_imageNumber == 0){
                  
               _keyLeft = false;
               
            }else{
               
               _keyRight = true;
               _keyLeft = true;
               
            }
            
         }
         
      }
      
   }   
}

Por bettoqo

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2012 03:00 pm
Recuerda usar los tag [ as ] (sin los espacios) cuando postees código, especialmente si son 500 líneas :)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.