Buenos días ,

He conseguido realizar una clase que me genere la galería a través de un XML, que tenga el movimiento que quiero , todo correcto.

Antes usaba la siguiente función para crear un reflejo :

Código Flex :

function Reflejo(mc) {


         //Creo un objeto Bitmap en el que esté dibujado el clip que paso como parámetro
         //Le doy la vuelta indicando que scaleY = -1;

         trace("reflejo1");
         trace(mc.width);
         if (mc.width>2880||mc.height>2880) {
            throw new Error("La imagen supera los 2880 pixeles permitidos para BitmapData");
            return;
         }
         var bmd:BitmapData=new BitmapData(mc.width,mc.height);
         trace("reflejo2");
         
         bmd.draw(mc);
         trace("reflejo3");
         var bm:Bitmap=new Bitmap(bmd);
         bm.x=0;
         bm.scaleY=-1;
         bm.y=mc.height*2;
         bm.cacheAsBitmap=true;
         trace("reflejo4");
         //Creo un degradado para la mascara por medio de createGradientBox. Jugando con los valores
         //de alphas y ratios se puede ajustar la longitud del reflejo. 
         var mascara=new Sprite  ;
         var tiporelleno:String=GradientType.LINEAR;
         var colores:Array=[0x00000000,0x00000000];
         var alphas:Array=[0.5,0];
         var ratios:Array=[0,180];
         var matr:Matrix=new Matrix  ;
         matr.createGradientBox(mc.width,mc.height,Math.PI/2,0,0);
         var spreadMethod:String=SpreadMethod.PAD;
         mascara.graphics.beginGradientFill(tiporelleno,colores,alphas,ratios,matr,spreadMethod);
         mascara.graphics.drawRect(0,0,mc.width,mc.height);
         mascara.x=0;
         mascara.y=mc.height;
         mascara.rotation;
         mascara.cacheAsBitmap=true;


         //Aplico la máscara a la copia del clip, y añado ambos al clip

         bm.mask=mascara;
         mc.addChild(bm);
         mc.addChild(mascara);
         var Anchobm:Number=new Number  ;
         var anchomascara:Number=new Number  ;
         Anchobm=bm.height;
         anchomascara=mascara.height;
         trace(" ancho bm " +Anchobm +"Ancho mascara"+ anchomascara);


      }


Con una galeria generada desde el Flash no tenian ningun problema, ahora en cambio , me realiza el reflejo totalmente en blanco , ademas de ir escalando la y por cada imagen .

Entonces hice la prueba con esta otra :

Código Flex :

function mirror(target:MovieClip, maskColor:String):void   {
               /*Este código copia el MovieClip al que queremos aplicar el reflejo y lo posiciona bajo el y lo invierte*/
   
            var targetClass:Class = Object(target).constructor;
            var targetCopy:MovieClip = new targetClass();
            targetCopy.y = target.y + target.height;
            targetCopy.x = target.x;
            targetCopy.scaleY = -1;
            targetCopy.width = target.width;
            targetCopy.height = target.height;
            addChild(targetCopy);
   
            /*Este código construye un Gradient que será aplicado a la copia del MovieClip para que simule el reflejo*/
   
            var msk:MovieClip = new MovieClip();
            var fillType:String = GradientType.LINEAR;
            var colors:Array = [maskColor, maskColor];
            var alphas:Array = [0, 1];
            var ratios:Array = [0, 255];
            var matrix:Matrix = new Matrix();
            matrix.createGradientBox(target.width / 2, target.height / 2, Math.PI / 2, 0, 0);
            var spreadMethod:String = SpreadMethod.PAD;
            msk.graphics.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod);
            msk.graphics.drawRect(0, 0, target.width, target.height);
            addChild(msk);
            msk.x = targetCopy.x - targetCopy.width / 2;
            msk.y = targetCopy.y - targetCopy.height / 2;
      }

Con esto consigo que por lo menos, la forma del reflejo sea el de la galeria creada, pero no hay reflejo solo el recuadro del mismo tamañao que el moviclip escaldo de y a -1 y totalmente en blanco.Creo que no detecta los thumbnails, no puedo hacer el reflejo del Loader, y si lo hago del mc donde añado el thumbnail(loader) sale en blanco.

Mi lógica me dice que el reflejo del mc está vacio por que no detecta los thumbnails, pero si los veo en pantalla, porque no es capaz de realizar el reflejo ?

Si creeis necesario que ponga la clase donde genero la galeria ,la pongo sin problemas.

Esa clase tan solo lee el Archivo XML, genera un movieclip donde vamos introduciendo los thumbnails , y lo añade .Otro movieclip con los preloaders y tb lo añade.

Si realizo Reflejo del container_mc me genera un reflejo por cada thumbnail , y se va incrementando tanto de ancho como de posicion y. si lo genero del objeto creado en la clase principal me da error BitmapData.


Si Realizo con la otra función mirror, sobre container_mc, si que me genera un moviclip, con la forma adecuada, es decir, un recuadro en blanco , del mismo tamaño que la galeria y en la posicion correcta. Pero sin reflejo. Como si no detectara los thumbnails que añado a container_mc. Y si lo hago sobre el objeto creado en la clase principal el error devuelto es :
ArgumentError: Error #1063: Discordancia del recuento de argumentos en eu.clases::CrearGaleria(). Se esperaba 1 y se obtuvo 0.
at eu.clases::Rudder/mirror()
at MethodInfo-230()

Estoy bastante perdido , y sin ideas... alguien sabe por donde puedo enfocarlo ?

muchas gracias de antemano