Tengo una galería de imagenes en flash, que levanta un xml, pero para visualizar las imágenes uso lightwindow.
Una por una abre y cierra, pero este lightwindow tiene una propiedad REL que al defnirla permite pasar de una imagen a la siguiente o anterior... Desde windows funciona hermoso... desde flash no consigo que funcione. Les dejo los code a ver si pueden darme una manito.
Gracias
FUNCION JS
Código Javascript :
<script language="javascript"> function muestraImagen(imagen, titulo, descripcion, rel) { myLightWindow.activateWindow({href: 'originales/' + imagen, title: 'Fernando Rusconi Hamond Organ Trio', caption: titulo, rel: 'rusconi[photos]'}); } </script>
XML x PHP
Código PHP :
<?php header("Content-type: text/xml"); $dir="minis/"; $dr=@opendir($dir); if(!$dr) { echo "<error/>"; exit; } else { echo "<exploracion>"; // recorremos todos los elementos de la carpeta while (($archivo = readdir($dr)) !== false) { // comprobamos que sean archivos y no otras carpetas if(filetype($dir . $archivo)!="dir") { $tam=round(filesize($dir . $archivo)/1024,0); echo "<archivo nombre='$archivo' tam='$tam'/>"; } } echo "</exploracion>"; closedir($dr); } ?>
AS
Código ActionScript :
System.useCodepage = true; XML.prototype.ignoreWhite = true; import mx.transitions.Tween; // separacion-> distancia entre las imágenes // tanto horizontal como vertical var separacion:Number = 28; // vbles para pasar de página var pagina_actual:Number = 1; var num_paginas:Number; // array donde metemos los elementos del XML var IMG_array:Array; // objeto XML que carga la lista de miniaturas var miniaturasXML:XML = new XML(); miniaturasXML.onLoad = mostrarMiniaturas; //miniaturasXML.load("/asp/verMiniaturas.asp"); miniaturasXML.load("verMiniaturas.php"); // funcion que se ejecuta al cargar el XML function mostrarMiniaturas():Void { // contadores de columna y fila para // disponer las miniaturas var fila:Number = 0; var col:Number = 0; // paso los datos del XML al array IMG_array = this.firstChild.childNodes; // como caben 20 fotos por página podemos // saber el núm de páginas necesarias para // mostrar todas las fotos num_paginas = Math.ceil(IMG_array.length/20); // creo el clip donde meteremos todas las miniaturas var lienzo:MovieClip = _parent.photoscont.createEmptyMovieClip("lienzo_miniaturas", _parent.photoscont.getNextHighestDepth()); lienzo.cacheAsBitmap = true; // lo posiciono donde nos conviene lienzo._x = 0; lienzo._y = 259; // y lo enmascaro con el clip situado en la // capa mascara. se enmascara para hacer el deslizamiento del // clip cuando tengamos muchas miniaturas y no entren todas a // la vez en pantalla (nuestro caso) lienzo.setMask(mascara_mc); // recorro el array que contiene la lista con los nombres de // los archivos de las miniaturas e invoco la función crearMiniatura // que es la que carga la imagen, la recoloca, le pone un pequeño // marco y le asigna las acciones para verla ampliada for (var k:Number = 0; IMG_array[k]; k++) { // extraigo la ruta del archivo de imagen // var ruta:String = "minis/"+IMG_array[k].attributes.nombre; // como sólo tengo diez columnas, cuando llegue a // la décima, avanzo una fila y retorno a la primera if (col>9) { col = 0; fila++; } // creo la miniatura. extraigo la ruta del archivo de imagen // y la paso como tercer parámetro crearMiniatura(col, fila, IMG_array[k].attributes.nombre); col++; } } function crearMiniatura(columnaF:Number, filaF:Number, ruta:String) { // bajo_clip es el clip que contendrá el marco de la miniatura var bajo_clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("bajo_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth()); // clip contendrá la imagen var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth()); // para cargar la miniatura definimos un objeto MovieClipLoader // y un objeto detector de eventos var mi_mcl:MovieClipLoader = new MovieClipLoader(); var miListener:Object = new Object(); mi_mcl.addListener(miListener); clip.valor = "aaa"; // cargamos la imagen mi_mcl.loadClip("minis/"+ruta, clip); miListener.onLoadStart = function(target_mc:MovieClip) { // cuando comienza la carga de la imagen // ponemos al _alpha a 0 target_mc._alpha = 0; }; miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) { // aquí podéis poner acciones para mostrar una precarga, // este caso no lo hemos considerado oportuno }; // cuando ya se ha completado la carga y tenemos disponible el clip miListener.onLoadInit = function(target_mc:MovieClip) { // recolocamos la imagen (todavía está oculta, con _alpha=0) target_mc._x = (separacion*columnaF)+(80-target_mc._width)*0.5; target_mc._y = (separacion*filaF)+(325-target_mc._height)*0.5; // recolocamos el marco que rodea a la foto bajo_clip._x = target_mc._x-1; bajo_clip._y = target_mc._y-1; // dibujamos el marco with (bajo_clip) { beginFill(0x000000); lineStyle(1, 0x000000, 100); lineTo(target_mc._width+1, 0); lineTo(target_mc._width+1, target_mc._height+1); lineTo(0, target_mc._height+1); lineTo(0, 0); endFill(); } // al pinchar sobre el área del marco, // mostramos la foto grande con la función // verFotoGrande bajo_clip.onRelease = function() { verFotoGrande(ruta); }; // muestro la miniatura animando el _alpha hasta 100 var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, 2, true); }; } function verFotoGrande(ruta:String) { getURL("javascript:muestraImagen('"+ruta+"');"); } function moverLienzo(posY:Number):Void { var myTween:Tween = new Tween(lienzo_miniaturas, "_y", mx.transitions.easing.Regular.easeOut, lienzo_miniaturas._y, posY, 1, true); } pMenos_btn.enabled = false; pMenos_btn._alpha = 30;
Salut y vita!
Emiliano