Por un aldo tengo el xml con con los enlaces como attributos:
Código XML :
<PROMOS_PARTICULARES> <espanol> <PROMO titulo="uno" ruta="./promos_principales/particulares/western.swf" enlace="http://www.marca.es" tiempo="50000"></PROMO> <PROMO titulo="dos" ruta="./promos_principales/particulares/libro_de_sellos.swf" enlace="https://www.google.es" tiempo="50000"></PROMO> </espanol> </PROMOS_PARTICULARES>
y el as:
Código ActionScript :
import flash.net.URLRequest; import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.filters.DropShadowFilter; import flash.text.*; import flash.display.Stage; import flash.ui.Mouse; ///variables// var activa:Object = root; /// este para cambiar la animacion var total_promos:Object = root; /// este para ver el numero de promos var objArray:Array = new Array(); // y este otro los botones var objPosis_Init:Array = new Array(); //Registro de las primeras posiciones de las cajas var objPosis:Array = new Array(); //Posterior almacenamiento de las siguientes porque no chuta contenedor.x dentro del evento. ///español/// var nombres_es:Array = new Array(); var ruta_es:Array = new Array(); var enlace_es:Array = new Array(); /////cargamos xml//// var xmlLoader:URLLoader = new URLLoader(); var xmlData:XML = new XML(); xmlLoader.addEventListener(Event.COMPLETE, LoadXML); xmlLoader.load(new URLRequest("xml/promociones_particulares.xml")); function LoadXML(e:Event):void { xmlData = new XML(e.target.data); carga(); // <<--lanza funcion } function carga(){ // <-- carga menu var recoge:uint = xmlData.espanol.PROMO.length(); for(var i:uint = 0 ; i < recoge ; i++){ ruta_es.push(xmlData.espanol.PROMO[i].attribute("ruta")); enlace_es.push(xmlData.espanol.PROMO[i].attribute("enlace")); nombres_es.push(xmlData.espanol.PROMO[i].attribute("titulo")); desactivabarra(); var cuadra:MovieClip = new MovieClip(); var contenedor = new Loader(); contenedor.load(new URLRequest(ruta_es[i])); contenedor.y = 0; contenedor.x = (separate * i) + (separate2 * i); cuadra.y=0; cuadra.x=(separate * i) + (separate2 * i); cont.addChild(contenedor); cont.addChild(cuadra); objArray.push(contenedor); objPosis_Init.push(contenedor.x); /// mete posiciones de inicio. objPosis.push(contenedor.x); /// mete posiciones siguientes. cuad.addEventListener(MouseEvent.MOUSE_DOWN,onCuadMouseDown); //////eventos enlaces////// contenedor.addEventListener(MouseEvent.CLICK, golink); function golink(e:MouseEvent) : void { e.currentTarget.url .... } //////////////////////////// function onCuadMouseDown(event:MouseEvent) : void { cuad.startDrag(false,scrollzone) stage.addEventListener(MouseEvent.MOUSE_UP,onStageMouseUp); activa.gameStat = "play"; timer.stop(); } function onStageMouseUp(event:MouseEvent) : void { activa.gameStat = "stop"; cuad.stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_UP,onStageMouseUp); timer.start(); objPosis.splice(0); for(var i:uint = 0 ; i < recoge ; i++){ objPosis.push(objPosis_Init[i] + Math.floor(cont.x)); } trace(objPosis);/// < -- posiciones.. } activa.total_promos = recoge; } }
Básicamente lo que necesito hacer, es decirle en esta función a los contenedores que se crean para cargar imágenes, que tienen que asociar los enlaces que he metido dentro del Array "enlace_es", para que cuando hagla clicks en éstas imágenes cargen los enlaces correspondientes. Vamos asociar botones con enlaces.
Código ActionScript :
contenedor.addEventListener(MouseEvent.CLICK, golink); function golink(e:MouseEvent) : void { e.currentTarget... }
No sé como hacerlo porque no puedo usar la propiedad "this" de igual modo que en as2 a la que estoy acostumbrado para asociar ambos elementos, así como tp e.currentTarget.url puesto que no me deja dentro de la clase new Loader y no sé porqué o que no estaré haciéndolo bien.
Ni idea de como construirlo, si alguién puediera contestarme le estaría muy agradecido.