Hola, tengo hecha una galería de imagenes, exclusivamente en as3 ya que yo html no conozco y hasta ahora me ha quedado bastante bien (en función de mis pocos conocimientos de este lenguaje) y se adecua bastante a lo que necesito, pero me gustaría a poder ser rizar un poco el rizo. Me explico.
Esta galería consiste en que importa las imagenes de la carpeta que tu le mandas, sin tener que estar en la bibilioteca, y mediante codigo las escala y las rota cada vez de una manera diferente, queda bastante curioso y desenfadado, cuando haces doble click en una imagen esta se hace grande (tamaño real de la imagen) y tanto esa como las otras puedes arrastrarlas por todo el escenario, cuando quieres ver otra imagen en grande le das doble click a esa otra y la que estaba en grande se hace pequeña por si sola y la otra se hace grande ¿Me explico?.
Bueno pues la cuestion es que me gustaría que una vez que la imagen estuviera en grande poder volver a darle doble click y que se hiciera pequeña otra vez.
Pero no se muy bien como hacerlo, ya que como os he dicho mis conocimientos de este lenguaje son algo escasos.
A ver si algun sabio dejandole el codigo que ya tengo me sabe decir que función o evento tengo que meterle y donde para que haga lo que pretendo.
Muchas gracias por adelantado.
Código actionscript:
Ver originalimport fl.transitions.easing.*;
import com.gskinner.motion.GTween;
var listadoFotos:Array = new Array();
listadoFotos = ["compo1.jpg", "compo2.jpg", "compo3.jpg", "compo4.jpg", "compo5.jpg", "compo6.jpg"];
var pAmp:Polaroid = null;
var velocidad:Number = .7;
for (var i:uint = 0; i<listadoFotos.length; i++) {
// traemos la clase Polaroid desde la biblioteca
var clip:Polaroid = new Polaroid();
addChild(clip);
// las colocamos
clip.x = Math.round(Math.random()*770);
clip.y = Math.round(Math.random()*500);
clip.rotation = Math.round(30-(Math.random()*60));
clip.scaleX = clip.scaleY = .4;
// recordamos los valores iniciales
clip.inicialX = clip.x;
clip.inicialY = clip.y;
clip.inicialRotacion = clip.rotation;
// cargamos la imagen
clip.addChild(cargaImagen("composicion/"+listadoFotos[i], -165 , -212));
// añadimos funcionalidad
clip.addEventListener(MouseEvent.MOUSE_DOWN, arrastra);
clip.addEventListener(MouseEvent.MOUSE_UP, suelta);
clip.mouseChildren = false;
clip.doubleClickEnabled = true;
clip.addEventListener(MouseEvent.DOUBLE_CLICK, amplia);
}
// carga de Imagen mediante función propia
function cargaImagen(ruta:String, dondeX:Number = 0, dondeY:Number = 0):Loader {
var peticion:URLRequest = new URLRequest(ruta);
var cargador:Loader = new Loader();
cargador.x = dondeX;
cargador.y = dondeY;
cargador.load(peticion);
// devolvemos el loader al sitio donde se ha hecho la llamada a la función
return cargador;
}
// amplia la foto seleccionada al hacer doble click y reduce la antigua si existiera
function amplia(ev:MouseEvent) {
if ( pAmp != null) {
var reducir:GTween = new GTween(pAmp, velocidad, {rotation:pAmp.inicialRotacion, scaleX:.3, scaleY:.3, x:pAmp.inicialX, y:pAmp.inicialY}, {ease:Strong.easeInOut});
}
var ampliar:GTween = new GTween(ev.currentTarget, velocidad, {rotation:0, scaleX:1, scaleY:1, x:175, y:212}, {ease:Strong.easeInOut});
pAmp = Polaroid(ev.currentTarget);
}
// comienza el arrastre de la polaroid por el escenario
function arrastra(ev:MouseEvent) {
addChild(Sprite(ev.currentTarget));
ev.currentTarget.startDrag();
}
// detiene el arrastre de la polaroid por el escenario
function suelta(ev:MouseEvent) {
var clip:Polaroid = Polaroid(ev.currentTarget);
clip.inicialX = clip.x;
clip.inicialY = clip.y;
stopDrag();}