Muchas gracias....
Código :
package { import gs.*; import gs.easing.*; import flash.display.*; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; public class Prototipo2 extends MovieClip { private var inFocus:MovieClip; private var loader:URLLoader; private var ancho:int; private var alto:int; public function Prototipo2():void { alto = stage.stageHeight; ancho = stage.stageWidth; loader=new URLLoader(new URLRequest("images.xml")); loader.addEventListener(Event.COMPLETE, setupClips); } private function setupClips(e:Event):void { var xml:XML=new XML(e.target.data); var list:XMLList=xml.image; for (var i:int=0; i<list.length(); i++) { var mc:MovieClip=MovieClip(con.getChildAt(i));//Convierte a MC, lo que se va encontrando en cada nivel... mc.buttonMode=true; mc.loc=[mc.x,mc.y];//Esta propiedad del MC guarda la localización original del MC, para así saber a dónde debe regresar cuando la mandamos atrás. var l:Loader = new Loader(); l.x=-156 //Mitad de ancho y mitad de largo respectivamente l.y=-192 l.load(new URLRequest(list[i].@src)); mc.addChildAt(l,0) var flip:Flip= new Flip (); mc.addChild (flip); flip.x=100; flip.y=140; flip.addEventListener(MouseEvent.CLICK,flipClick); mc.addEventListener(MouseEvent.CLICK,onClick); } } private function flipClick(e:MouseEvent):void { e.stopPropagation();//Esto es clave para que no se propague el evento al mc var flip:Flip= new Flip (); var mc:MovieClip=MovieClip(e.currentTarget.parent);//Así se accede al contenedor de flip flip.removeEventListener(MouseEvent.CLICK,flipClick); mc.removeChildAt (2); if (mc!=inFocus) {//Siempre que el mc no este agrandado.... TweenLite.to(mc,0.2,{rotationY:180,ease:Linear.easeNone,onComplete:regresar}) function regresar (){ mc.addEventListener(MouseEvent.ROLL_OUT,onOut); } TweenLite.to(mc.detras,0.2,{alpha:1});//Esto es para que aparezca la etiqueta, MC enlarge dentro de cada foto } } private function onOut(e:MouseEvent):void { var mc:MovieClip=MovieClip(e.currentTarget); var flip:Flip= new Flip (); mc.removeEventListener(MouseEvent.ROLL_OUT,onOut); if (mc!=inFocus) {//Siempre que el mc no este agrandado.... TweenLite.to(mc,0.2,{rotationY:0,ease:Linear.easeNone,onComplete:regresar2}) function regresar2 (){ flip.addEventListener(MouseEvent.CLICK,flipClick); mc.addChild(flip); } TweenLite.to(mc.detras,0.2,{alpha:0});//Esto es para que desaparezca la etiqueta. } } private function onClick(e:MouseEvent):void { var mc:MovieClip=MovieClip(e.currentTarget); var flip:Flip= new Flip (); if (inFocus==null) {//Cuando no hay nada grande, inFocus es igual a null. scaleUp(mc);//Como no hay nada grande, hacemos grande el actual mc //Si ya hay algo en grande, lo hacemos pequeño y lo devolvemos a su posición inicial, guardada en forma de Array. // Cuando se haya completado la animación, devolvemos a inFocus el valor null } else if (inFocus==mc) { removeChild (inFocus); mc.x=0; mc.y=0; con.addChild (mc); TweenLite.to(mc, 0.5, {scaleX:1,scaleY:1,x:mc.loc[0],y:mc.loc[1],ease:Strong.easeOut,onComplete:volver}); function volver(){ inFocus=null; if (mc.rotationY==0){ mc.addChild(flip); } //ESTA FUNCIÓN ES LA QUE NO FUNCIONA EN EL HTML if (mc.rotationY==180){ mc.addEventListener(MouseEvent.ROLL_OUT,onOut); } ///////// flip.addEventListener(MouseEvent.CLICK,flipClick); } } } private function scaleUp(mc:MovieClip):void { inFocus=mc;//Como estamos haciendo grande este mc, inFocus deja de ser null if (inFocus.rotationY==180){ inFocus.detras.alpha=1; }else{ inFocus.detras.alpha=0;//Alfa de la etiqueta inFocus.removeChildAt (2); } inFocus.x= ancho/2;//(inFocus.loc[0]) inFocus.y= alto/2;//(inFocus.loc[1]) addChild(inFocus);//De esta manera ponemos el mc sobre todo lo demás TweenLite.to(inFocus,0.5,{width:ancho,height:alto,ease:Strong.easeOut}); } } }