Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/08/2010, 06:25
eronemamone
 
Fecha de Ingreso: mayo-2010
Mensajes: 49
Antigüedad: 14 años
Puntos: 0
Problema al crear Reflejo con una clase de carga Dinamica

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 as3:
Ver original
  1. function Reflejo(mc) {
  2.  
  3.  
  4.             //Creo un objeto Bitmap en el que esté dibujado el clip que paso como parámetro
  5.             //Le doy la vuelta indicando que scaleY = -1;
  6.  
  7.             trace("reflejo1");
  8.             trace(mc.width);
  9.             if (mc.width>2880||mc.height>2880) {
  10.                 throw new Error("La imagen supera los 2880 pixeles permitidos para BitmapData");
  11.                 return;
  12.             }
  13.             var bmd:BitmapData=new BitmapData(mc.width,mc.height);
  14.             trace("reflejo2");
  15.            
  16.             bmd.draw(mc);
  17.             trace("reflejo3");
  18.             var bm:Bitmap=new Bitmap(bmd);
  19.             bm.x=0;
  20.             bm.scaleY=-1;
  21.             bm.y=mc.height*2;
  22.             bm.cacheAsBitmap=true;
  23.             trace("reflejo4");
  24.             //Creo un degradado para la mascara por medio de createGradientBox. Jugando con los valores
  25.             //de alphas y ratios se puede ajustar la longitud del reflejo.
  26.             var mascara=new Sprite  ;
  27.             var tiporelleno:String=GradientType.LINEAR;
  28.             var colores:Array=[0x00000000,0x00000000];
  29.             var alphas:Array=[0.5,0];
  30.             var ratios:Array=[0,180];
  31.             var matr:Matrix=new Matrix  ;
  32.             matr.createGradientBox(mc.width,mc.height,Math.PI/2,0,0);
  33.             var spreadMethod:String=SpreadMethod.PAD;
  34.             mascara.graphics.beginGradientFill(tiporelleno,colores,alphas,ratios,matr,spreadMethod);
  35.             mascara.graphics.drawRect(0,0,mc.width,mc.height);
  36.             mascara.x=0;
  37.             mascara.y=mc.height;
  38.             mascara.rotation;
  39.             mascara.cacheAsBitmap=true;
  40.  
  41.  
  42.             //Aplico la máscara a la copia del clip, y añado ambos al clip
  43.  
  44.             bm.mask=mascara;
  45.             mc.addChild(bm);
  46.             mc.addChild(mascara);
  47.             var Anchobm:Number=new Number  ;
  48.             var anchomascara:Number=new Number  ;
  49.             Anchobm=bm.height;
  50.             anchomascara=mascara.height;
  51.             trace(" ancho bm " +Anchobm +"Ancho mascara"+ anchomascara);
  52.  
  53.  
  54.         }

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 as3:
Ver original
  1. function mirror(target:MovieClip, maskColor:String):void   {
  2.                  /*Este código copia el MovieClip al que queremos aplicar el reflejo y lo posiciona bajo el y lo invierte*/
  3.    
  4.             var targetClass:Class = Object(target).constructor;
  5.             var targetCopy:MovieClip = new targetClass();
  6.             targetCopy.y = target.y + target.height;
  7.             targetCopy.x = target.x;
  8.             targetCopy.scaleY = -1;
  9.             targetCopy.width = target.width;
  10.             targetCopy.height = target.height;
  11.             addChild(targetCopy);
  12.    
  13.             /*Este código construye un Gradient que será aplicado a la copia del MovieClip para que simule el reflejo*/
  14.    
  15.             var msk:MovieClip = new MovieClip();
  16.             var fillType:String = GradientType.LINEAR;
  17.             var colors:Array = [maskColor, maskColor];
  18.             var alphas:Array = [0, 1];
  19.             var ratios:Array = [0, 255];
  20.             var matrix:Matrix = new Matrix();
  21.             matrix.createGradientBox(target.width / 2, target.height / 2, Math.PI / 2, 0, 0);
  22.             var spreadMethod:String = SpreadMethod.PAD;
  23.             msk.graphics.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod);
  24.             msk.graphics.drawRect(0, 0, target.width, target.height);
  25.             addChild(msk);
  26.             msk.x = targetCopy.x - targetCopy.width / 2;
  27.             msk.y = targetCopy.y - targetCopy.height / 2;
  28.         }

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 ?

Alguien sabe por donde podría tirar ??

muchas gracias de antemano