Foros del Web » Creando para Internet » Flash y Actionscript »

addChild de otra clase

Estas en el tema de addChild de otra clase en el foro de Flash y Actionscript en Foros del Web. Buenas tardes, Estoy intentando crearme una clase, que me genere una galeria a traves de un XML, ya he logrado que desde Main.as , realice ...
  #1 (permalink)  
Antiguo 17/08/2010, 08:43
 
Fecha de Ingreso: mayo-2010
Mensajes: 49
Antigüedad: 14 años, 6 meses
Puntos: 0
addChild de otra clase

Buenas tardes,

Estoy intentando crearme una clase, que me genere una galeria a traves de un XML, ya he logrado que desde Main.as , realice la llamada, y aparezcan en pantalla.

El problema está en que no me mantiene las posiciones que estan en la clase. Si pruebo la clase con un archivo fla independiente , y escrito lo mismo en la TimeLine, aparece todo ordenado y colocado, cuando realizo la llamada al mismo codigo convertido en clase, me genera la galeria pero cada mc, encima del anterior mc.

Os dejo la clase y aver si me podeis decir donde está el error , muchas gracias.
Código as:
Ver original
  1. package eu.clases{
  2.     import fl.controls.ProgressBar;
  3.     import fl.transitions.Tween;
  4.     import fl.transitions.easing.*;
  5.     import fl.transitions.TweenEvent;
  6.     import flash.text.TextFieldType;
  7.     import flash.utils.Timer;
  8.     import flash.display.Shape;
  9.     import flash.display.GradientType;
  10.     import flash.geom.Matrix;
  11.     import flash.events.KeyboardEvent;
  12.     import flash.ui.Keyboard;
  13.     import flash.display.SimpleButton;
  14.     import flash.events.MouseEvent;
  15.     import flash.display.Shape;
  16.     import flash.display.Graphics;
  17.         import flash.display.Stage;
  18.     import flash.display.MovieClip;
  19.     import flash.display.Sprite;
  20.     import flash.display.Loader;
  21.     import flash.events.*;
  22.     import flash.net.URLRequest;
  23.     import flash.net.URLLoader;
  24.  
  25.  
  26.     public class CrearGaleria extends MovieClip {
  27.         var columns:Number;
  28.         var my_x:Number;
  29.         var my_y:Number;
  30.         var my_thumb_width:Number;
  31.         var my_thumb_height:Number;
  32.         var my_images:XMLList;
  33.         var my_total:Number;
  34.  
  35.         var container_mc:MovieClip;
  36.         var preloaders_mc:MovieClip;
  37.         var full_mc:MovieClip;
  38.         //var galeria:String = new String;
  39.  
  40.         var x_counter:Number=0;
  41.         var y_counter:Number=0;
  42.  
  43.         var my_tweens:Array=[];
  44.         var container_mc_tween:Tween;
  45.         var full_tween:Tween;
  46.         var myXMLLoader:URLLoader=new URLLoader  ;
  47.        
  48.         private var req:URLRequest;
  49.  
  50.         // Constants:
  51.         // Public Properties:
  52.         // Private Properties:
  53.  
  54.         // Initialization:
  55.         public function CrearGaleria(galeria):void {
  56.            
  57.             myXMLLoader = new URLLoader(new URLRequest(galeria));
  58.             myXMLLoader.addEventListener(Event.COMPLETE, processXML);
  59.            
  60.            
  61.  
  62.         }
  63.        
  64.         function setMyXMLLoader(galeria) {
  65.             trace("set1");
  66.             myXMLLoader.load(new URLRequest(galeria));
  67.             trace("set2");
  68.             myXMLLoader.addEventListener(Event.COMPLETE,processXML);
  69.             trace("set3");
  70.  
  71.         }
  72.        
  73.         // Public Methods:
  74.         function processXML(e:Event):void {
  75.             var myXML:XML=new XML(e.target.data);
  76.  
  77.             columns=myXML.@COLUMNS;
  78.             my_x=myXML.@XPOSITION;
  79.             my_y=myXML.@YPOSITION;
  80.             my_thumb_width=myXML.@WIDTH;
  81.             my_thumb_height=myXML.@HEIGHT;
  82.             my_images=myXML.IMAGE;
  83.             my_total=my_images.length();
  84.             createContainer();
  85.             callThumbs();
  86.             myXMLLoader.removeEventListener(Event.COMPLETE,processXML);
  87.             myXMLLoader=null;
  88.         }
  89.  
  90.         function createContainer():void{
  91.             container_mc=new MovieClip  ;
  92.             container_mc.x=my_x;
  93.             container_mc.y=my_y;
  94.            
  95.             addChild(container_mc);
  96.             trace(container_mc.parent);
  97.             container_mc.addEventListener(MouseEvent.CLICK,callFull);
  98.             container_mc.addEventListener(MouseEvent.MOUSE_OVER,onOver);
  99.             container_mc.addEventListener(MouseEvent.MOUSE_OUT,onOut);
  100.             container_mc.buttonMode=true;
  101.  
  102.             preloaders_mc=new MovieClip  ;
  103.             preloaders_mc.x=container_mc.x;
  104.             preloaders_mc.y=container_mc.y;
  105.             container_mc.addChild(preloaders_mc);
  106.             trace("add3");
  107.         }
  108.  
  109.         function callThumbs():void {
  110.             for (var i:Number=0; i<my_total; i++) {
  111.  
  112.                 var thumb_url=my_images[i].@THUMB;
  113.                 trace("callThums"+i);
  114.                 var thumb_loader=new Loader  ;
  115.                 thumb_loader.load(new URLRequest(thumb_url));
  116.                 thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,thumbLoaded);
  117.  
  118.                 thumb_loader.name=i;
  119.  
  120.                 thumb_loader.x=my_thumb_width+10*x_counter;
  121.                 thumb_loader.y=my_thumb_height+10*y_counter;
  122.  
  123.                 if (x_counter+1<columns) {
  124.                     x_counter++;
  125.                 } else {
  126.                     x_counter=0;
  127.                     y_counter++;
  128.                 }
  129.                 var preloader_pb:ProgressBar=new ProgressBar  ;
  130.                 preloader_pb.source=thumb_loader.contentLoaderInfo;
  131.                 preloader_pb.x=thumb_loader.x;
  132.                 preloader_pb.y=thumb_loader.y;
  133.                 preloader_pb.width=my_thumb_width;
  134.                 preloader_pb.height=my_thumb_height;
  135.                 preloaders_mc.addChild(preloader_pb);
  136.  
  137.                 preloader_pb.addEventListener(Event.COMPLETE,donePb);
  138.             }
  139.         }
  140.  
  141.         function thumbLoaded(e:Event):void {
  142.             var my_thumb:Loader=Loader(e.target.loader);
  143.             container_mc.addChild(my_thumb);
  144.             my_tweens[Number(my_thumb.name)]=new Tween(my_thumb,"alpha",Strong.easeIn,0,1,0.5,true);
  145.  
  146.             my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE,thumbLoaded);
  147.         }
  148.  
  149.         function callFull(e:MouseEvent):void {
  150.             var full_loader:Loader=new Loader  ;
  151.             var full_url=my_images[e.target.name].@FULL;
  152.             full_loader.load(new URLRequest(full_url));
  153.             full_loader.contentLoaderInfo.addEventListener(Event.INIT,fullLoaded);
  154.  
  155.             var full_pb:ProgressBar=new ProgressBar  ;
  156.             full_pb.source=full_loader.contentLoaderInfo;
  157.             full_pb.x=stage.stageWidth-full_pb.width/2;
  158.             full_pb.y=stage.stageHeight-full_pb.height/2;
  159.             preloaders_mc.addChild(full_pb);
  160.  
  161.             full_pb.addEventListener(Event.COMPLETE,donePb);
  162.  
  163.             container_mc.removeEventListener(MouseEvent.CLICK,callFull);
  164.             container_mc.buttonMode=false;
  165.             container_mc.removeEventListener(MouseEvent.MOUSE_OVER,onOver);
  166.             container_mc.removeEventListener(MouseEvent.MOUSE_OUT,onOut);
  167.             container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true);
  168.         }
  169.         function fullLoaded(e:Event):void {
  170.             full_mc=new MovieClip  ;
  171.             full_mc.buttonMode=true;
  172.             addChild(full_mc);
  173.             var my_loader:Loader=Loader(e.target.loader);
  174.             full_mc.addChild(my_loader);
  175.             full_tween=new Tween(my_loader,"alpha",Strong.easeIn,0,1,0.5,true);
  176.             my_loader.x=stage.stageWidth-my_loader.width/2;
  177.             my_loader.y=stage.stageHeight-my_loader.height/2;
  178.             my_loader.addEventListener(MouseEvent.CLICK,removeFull);
  179.  
  180.             my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,fullLoaded);
  181.         }
  182.         function removeFull(e:MouseEvent):void {
  183.             var my_loader:Loader=Loader(e.currentTarget);
  184.             full_tween=new Tween(my_loader,"alpha",Strong.easeOut,1,0,0.5,true);
  185.             full_tween.addEventListener(TweenEvent.MOTION_FINISH,tweenFinished);
  186.  
  187.             container_mc_tween=new Tween(container_mc,"alpha",Strong.easeOut,0.5,1,0.5,true);
  188.         }
  189.  
  190.         function donePb(e:Event):void {
  191.             var my_pb:ProgressBar=ProgressBar(e.target);
  192.             preloaders_mc.removeChild(my_pb);
  193.             my_pb.removeEventListener(Event.COMPLETE,donePb);
  194.         }
  195.  
  196.         function tweenFinished(e:TweenEvent):void {
  197.             var my_loader:Loader=Loader(e.target.obj);
  198.             my_loader.unload();
  199.             full_mc.removeChild(my_loader);// This line was removeChid(my_loader), just add full_mc before it.
  200.             removeChild(full_mc);
  201.             full_mc=null;
  202.  
  203.             container_mc.addEventListener(MouseEvent.CLICK,callFull);
  204.             container_mc.buttonMode=true;
  205.             container_mc.addEventListener(MouseEvent.MOUSE_OVER,onOver);
  206.             container_mc.addEventListener(MouseEvent.MOUSE_OUT,onOut);
  207.  
  208.             var my_tween:Tween=Tween(e.target);
  209.             my_tween.removeEventListener(TweenEvent.MOTION_FINISH,tweenFinished);
  210.         }
  211.         function onOver(e:MouseEvent):void {
  212.             var my_thumb:Loader=Loader(e.target);
  213.             my_thumb.alpha=0.5;
  214.         }
  215.         function onOut(e:MouseEvent):void {
  216.             var my_thumb:Loader=Loader(e.target);
  217.             my_thumb.alpha=1;
  218.         }
  219.         // Protected Methods:
  220.     }
  221.  
  222. }

Muchas gracias, de antemano.
  #2 (permalink)  
Antiguo 19/08/2010, 17:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 49
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: addChild de otra clase

Buenas a todos,

He probado cambiar var my_thumb:Loader=Loader(e.target);

por var my_thumb:DisplayObject=DisplayObject(e.target.cont ent);


El comportamiento es distinto, pero tampoco las posiciona una al lado de la otra, como le indico en el for, si a alguien se le ocurre algo ... El metodo Callthumb y createContainer, es donde añade todo y es bastante simple, por eso me descoloca tanto , si alguien tiene cualquier sugerencia... tutorial, ejemplo, lo que sea en lo que me pueda basar para seguir, me sería de mucha ayuda

Gracias,
  #3 (permalink)  
Antiguo 19/08/2010, 17:30
 
Fecha de Ingreso: mayo-2010
Mensajes: 49
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: addChild de otra clase

Perdonar a todos... estaba ofuscado con esto creo que completo la clase, si le sirve a alguien ahí la tiene. el error estaba en :

thumb_loader.x=(my_thumb_width+10)*x_counter;
thumb_loader.y=(my_thumb_height+10)*y_counter;

Faltaban los parentesis... maravillosos tracers.... me ha costado ...

Gracias a quienes lo leyeron.

Etiquetas: addchild, clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:15.