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; } } } } }