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

Fondo adaptable

Estas en el tema de Fondo adaptable en el foro de Flash y Actionscript en Foros del Web. Hola buenas, que tal; Os cuento mi problema con esto llevo ya mas de 70 horas intentandolo pero no hay manera de hacerlo. Genero un ...
  #1 (permalink)  
Antiguo 05/01/2010, 09:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Fondo adaptable

Hola buenas, que tal; Os cuento mi problema con esto llevo ya mas de 70 horas intentandolo pero no hay manera de hacerlo.

Genero un clip y lo pinto con beginGradientFil, luego como quiero que cambie de color el degradado cuando pulse un boton, he recogido un codigo de internet que genera rgb a exadeimales, el problema viene que cuando redimensiono pantalla el color se pierde hasta que no le de otra vez al boton. Os pongo el codigo:

Código ActionScript:
Ver original
  1. //////////////////
  2. import mx.transitions.Tween;
  3. import mx.transitions.easing.*;
  4. Stage.scaleMode = "noScale";
  5. Stage.align = "TL";
  6. /////// variables
  7. a = Stage.width;
  8. b = Stage.height;
  9.  
  10. ///////////////////
  11. var miListener:Object = new Object();
  12. creafons();
  13.  
  14. ////////////////
  15. function creafons(Fondo:MovieClip, angle:Number, from:Number, to:Number) {
  16.     Fondo.firstColor = from;
  17.     Fondo.secondColor = to;
  18.     createEmptyMovieClip("Fondo",1);
  19.     import flash.geom.*;
  20.     var fillType:String = "linear";
  21.     var angle:Number = angle || 90;
  22.     var colors:Array = [from, to];
  23.     var alphas:Array = [50, 50];
  24.     var ratios:Array = [127, 255];
  25.     var matrix:Matrix = new Matrix();
  26.     matrix.createGradientBox(a,a,0,0,0);
  27.     var spreadMethod:String = "pad";
  28.     Fondo.beginGradientFill(fillType,colors,alphas,ratios,matrix,spreadMethod);
  29.     Fondo.lineTo(0,25);
  30.     Fondo.lineTo(0,b);
  31.     Fondo.lineTo(a,b);
  32.     Fondo.lineTo(a,0);
  33.     Fondo.endFill();
  34.  
  35. }
  36. /////////////////////
  37. function tweenGradientFondo(what:MovieClip, c1:Number, c2:Number, time:Number) {
  38.     what.percent.stop;
  39.     delete what.percent;
  40.     var holder:Object = new Object();
  41.     holder.percent = 0;
  42.     ///first color///
  43.     var red:Number = what.firstColor >>> (4*4) & 0xFF;
  44.     var green:Number = what.firstColor >>> (2*4) & 0xFF;
  45.     var blue:Number = what.firstColor >>> (0*4) & 0xFF;
  46.     var toRed:Number = c1 >>> (4*4) & 0xFF;
  47.     var toGreen:Number = c1 >>> (2*4) & 0xFF;
  48.     var toBlue:Number = c1 >>> (0*4) & 0xFF;
  49.     var redDiff:Number = (toRed-red)/100;
  50.     var greenDiff:Number = (toGreen-green)/100;
  51.     var blueDiff:Number = (toBlue-blue)/100;
  52.     ///second color///
  53.     var red2:Number = what.secondColor >>> (4*4) & 0xFF;
  54.     var green2:Number = what.secondColor >>> (2*4) & 0xFF;
  55.     var blue2:Number = what.secondColor >>> (0*4) & 0xFF;
  56.     var toRed2:Number = c2 >>> (4*4) & 0xFF;
  57.     var toGreen2:Number = c2 >>> (2*4) & 0xFF;
  58.     var toBlue2:Number = c2 >>> (0*4) & 0xFF;
  59.     var redDiff2:Number = (toRed2-red2)/100;
  60.     var greenDiff2:Number = (toGreen2-green2)/100;
  61.     var blueDiff2:Number = (toBlue2-blue2)/100;
  62.  
  63.     what.percent = new Tween(holder, "percent", None.easeNone, 0, 100, time, true);
  64.     what.percent.onMotionChanged = function() {
  65.         ///FIRST COLOR///
  66.         var r = red+(redDiff*holder.percent);
  67.         var g = green+(greenDiff*holder.percent);
  68.         var b = blue+(blueDiff*holder.percent);
  69.         what.firstColor = (r << (4*4)) | (g << (2*4)) | (b << (0*4));
  70.         ///
  71.         ///SECOND COLOR///
  72.         var r2 = red2+(redDiff2*holder.percent);
  73.         var g2 = green2+(greenDiff2*holder.percent);
  74.         var b2 = blue2+(blueDiff2*holder.percent);
  75.         what.secondColor = (r2 << (4*4)) | (g2 << (2*4)) | (b2 << (0*4));
  76.         ////set new gradient
  77.         creafons(what,90,what.firstColor,what.secondColor);
  78.  
  79.     };
  80. }
  81. /////////////////////
  82. Stage.addListener(miListener);
  83. miListener.onResize = function() {
  84.     a = Stage.width;
  85.     b = Stage.height;
  86.     creafons();
  87. };
  88. ///////////////////
  89. boto.onPress =function() {
  90.     tweenGradientFondo(Fondo,0xffffff*Math.random(),0xffffff*Math.random(),1);
  91. }

No se porque se pierde la información de la variable, a ver si alguien me puede hechar un cable, gracias.

Etiquetas: fondo
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 20:18.