Llevo un par de días, intentando crearme una clase que me genere una "galeria" automaticamente desde un archivo XML, tan solo necesito un movieclip que ponga las imagenes una al lado de la otra , hasta cierta columna, que entonces sigue añadiendo debajo.
LA estoy sacando de un tutorial de Cristalab, si no me falla la memoria, entonces las columnas , los datos de tamaños, etc los paso por el XML, de momento yo he conseguido, que me lea el archivo XML, que inserte las imagenes, pero me las coloca una encima de la otra, no al lado.
He revisado el codigo mil veces, no lo logro entender, el mismo codigo , en la Timeline Funciona, en cambio en la clase, pasa olimpicamente de las posiciones, adjunto aqui la clase, para ver si alguien ve por que no las posiciona ,
Muchas gracias de antemano,
Código Flex :
package eu.clases{ import fl.controls.ProgressBar; import fl.transitions.Tween; import fl.transitions.easing.*; import fl.transitions.TweenEvent; import flash.text.TextFieldType; import flash.utils.Timer; import flash.display.Shape; import flash.display.GradientType; import flash.geom.Matrix; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.display.SimpleButton; import flash.events.MouseEvent; import flash.display.Shape; import flash.display.Graphics; import flash.display.Stage; import flash.display.MovieClip; import flash.display.Sprite; import flash.display.Loader; import flash.events.*; import flash.net.URLRequest; import flash.net.URLLoader; public class CrearGaleria extends MovieClip { var columns:Number; var my_x:Number; var my_y:Number; var my_thumb_width:Number; var my_thumb_height:Number; var my_images:XMLList; var my_total:Number; var container_mc:MovieClip; var preloaders_mc:MovieClip; var full_mc:MovieClip; //var galeria:String = new String; var x_counter:Number=0; var y_counter:Number=0; var my_tweens:Array=[]; var container_mc_tween:Tween; var full_tween:Tween; var myXMLLoader:URLLoader=new URLLoader ; private var req:URLRequest; // Constants: // Public Properties: // Private Properties: // Initialization: public function CrearGaleria(galeria):void { myXMLLoader = new URLLoader(new URLRequest(galeria)); myXMLLoader.addEventListener(Event.COMPLETE, processXML); } function setMyXMLLoader(galeria) { trace("set1"); myXMLLoader.load(new URLRequest(galeria)); trace("set2"); myXMLLoader.addEventListener(Event.COMPLETE,processXML); trace("set3"); } // Public Methods: function processXML(e:Event):void { var myXML:XML=new XML(e.target.data); columns=myXML.@COLUMNS; my_x=myXML.@XPOSITION; my_y=myXML.@YPOSITION; my_thumb_width=myXML.@WIDTH; my_thumb_height=myXML.@HEIGHT; my_images=myXML.IMAGE; my_total=my_images.length(); createContainer(); callThumbs(); myXMLLoader.removeEventListener(Event.COMPLETE,processXML); myXMLLoader=null; } function createContainer():void{ var prueba:MovieClip = new MovieClip; container_mc=new MovieClip ; container_mc.x=my_x; container_mc.y=my_y; container_mc.width=600; addChild(container_mc); container_mc.addEventListener(MouseEvent.CLICK,callFull); container_mc.addEventListener(MouseEvent.MOUSE_OVER,onOver); container_mc.addEventListener(MouseEvent.MOUSE_OUT,onOut); container_mc.buttonMode=true; preloaders_mc=new MovieClip ; preloaders_mc.x=container_mc.x; preloaders_mc.y=container_mc.y; addChild(preloaders_mc); trace(container_mc.width); } function callThumbs():void { for (var i:Number=0; i<my_total; i++) { trace(container_mc.width); var thumb_url=my_images[i].@THUMB; trace("callThums"+i); var thumb_loader=new Loader ; thumb_loader.load(new URLRequest(thumb_url)); thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,thumbLoaded); thumb_loader.name=i; trace(my_thumb_width); trace(x_counter); thumb_loader.x=my_thumb_width+10*x_counter; thumb_loader.y=my_thumb_height+10*y_counter; if (x_counter+1<columns) { x_counter++; } else { x_counter=0; y_counter++; } var preloader_pb:ProgressBar=new ProgressBar ; preloader_pb.source=thumb_loader.contentLoaderInfo; preloader_pb.x=thumb_loader.x; preloader_pb.y=thumb_loader.y; preloader_pb.width=my_thumb_width; preloader_pb.height=my_thumb_height; //preloaders_mc.width=600; preloaders_mc.addChild(preloader_pb); preloader_pb.addEventListener(Event.COMPLETE,donePb); } } function thumbLoaded(e:Event):void { var my_thumb:Loader=Loader(e.target.loader); container_mc.addChild(my_thumb); my_tweens[Number(my_thumb.name)]=new Tween(my_thumb,"alpha",Strong.easeIn,0,1,0.5,true); my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE,thumbLoaded); } function callFull(e:MouseEvent):void { var full_loader:Loader=new Loader ; var full_url=my_images[e.target.name].@FULL; full_loader.load(new URLRequest(full_url)); full_loader.contentLoaderInfo.addEventListener(Event.INIT,fullLoaded); var full_pb:ProgressBar=new ProgressBar ; full_pb.source=full_loader.contentLoaderInfo; full_pb.x=stage.stageWidth-full_pb.width/2; full_pb.y=stage.stageHeight-full_pb.height/2; preloaders_mc.addChild(full_pb); full_pb.addEventListener(Event.COMPLETE,donePb); container_mc.removeEventListener(MouseEvent.CLICK,callFull); container_mc.buttonMode=false; container_mc.removeEventListener(MouseEvent.MOUSE_OVER,onOver); container_mc.removeEventListener(MouseEvent.MOUSE_OUT,onOut); container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true); } function fullLoaded(e:Event):void { full_mc=new MovieClip ; full_mc.buttonMode=true; addChild(full_mc); var my_loader:Loader=Loader(e.target.loader); full_mc.addChild(my_loader); full_tween=new Tween(my_loader,"alpha",Strong.easeIn,0,1,0.5,true); my_loader.x=stage.stageWidth-my_loader.width/2; my_loader.y=stage.stageHeight-my_loader.height/2; my_loader.addEventListener(MouseEvent.CLICK,removeFull); my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,fullLoaded); } function removeFull(e:MouseEvent):void { var my_loader:Loader=Loader(e.currentTarget); full_tween=new Tween(my_loader,"alpha",Strong.easeOut,1,0,0.5,true); full_tween.addEventListener(TweenEvent.MOTION_FINISH,tweenFinished); container_mc_tween=new Tween(container_mc,"alpha",Strong.easeOut,0.5,1,0.5,true); } function donePb(e:Event):void { var my_pb:ProgressBar=ProgressBar(e.target); preloaders_mc.removeChild(my_pb); my_pb.removeEventListener(Event.COMPLETE,donePb); } function tweenFinished(e:TweenEvent):void { var my_loader:Loader=Loader(e.target.obj); my_loader.unload(); full_mc.removeChild(my_loader);// This line was removeChid(my_loader), just add full_mc before it. removeChild(full_mc); full_mc=null; container_mc.addEventListener(MouseEvent.CLICK,callFull); container_mc.buttonMode=true; container_mc.addEventListener(MouseEvent.MOUSE_OVER,onOver); container_mc.addEventListener(MouseEvent.MOUSE_OUT,onOut); var my_tween:Tween=Tween(e.target); my_tween.removeEventListener(TweenEvent.MOTION_FINISH,tweenFinished); } function onOver(e:MouseEvent):void { var my_thumb:Loader=Loader(e.target); my_thumb.alpha=0.5; } function onOut(e:MouseEvent):void { var my_thumb:Loader=Loader(e.target); my_thumb.alpha=1; } // Protected Methods: } }
Y ya de paso contribuimos con una clase ! Espero vuestros comentarios