Comunidad de diseño web y desarrollo en internet online

Fondo adaptable y degradado, se pierde informacion

Citar            
MensajeEscrito el 05 Ene 2010 03:50 pm
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 :

//////////////////
import mx.transitions.Tween;
import mx.transitions.easing.*;
Stage.scaleMode = "noScale";
Stage.align = "TL";
/////// variables
a = Stage.width;
b = Stage.height;
 
///////////////////
var miListener:Object = new Object();
creafons();
 
////////////////
function creafons(Fondo:MovieClip, angle:Number, from:Number, to:Number) {
    Fondo.firstColor = from;
    Fondo.secondColor = to;
    createEmptyMovieClip("Fondo",1);
    import flash.geom.*;
    var fillType:String = "linear";
    var angle:Number = angle || 90;
    var colors:Array = [from, to];
    var alphas:Array = [50, 50];
    var ratios:Array = [127, 255];
    var matrix:Matrix = new Matrix();
    matrix.createGradientBox(a,a,0,0,0);
    var spreadMethod:String = "pad";
    Fondo.beginGradientFill(fillType,colors,alphas,ratios,matrix,spreadMethod);
    Fondo.lineTo(0,25);
    Fondo.lineTo(0,b);
    Fondo.lineTo(a,b);
    Fondo.lineTo(a,0);
    Fondo.endFill();
 
}
/////////////////////
function tweenGradientFondo(what:MovieClip, c1:Number, c2:Number, time:Number) {
    what.percent.stop;
    delete what.percent;
    var holder:Object = new Object();
    holder.percent = 0;
    ///first color///
    var red:Number = what.firstColor >>> (4*4) & 0xFF;
    var green:Number = what.firstColor >>> (2*4) & 0xFF;
    var blue:Number = what.firstColor >>> (0*4) & 0xFF;
    var toRed:Number = c1 >>> (4*4) & 0xFF;
    var toGreen:Number = c1 >>> (2*4) & 0xFF;
    var toBlue:Number = c1 >>> (0*4) & 0xFF;
    var redDiff:Number = (toRed-red)/100;
    var greenDiff:Number = (toGreen-green)/100;
    var blueDiff:Number = (toBlue-blue)/100;
    ///second color///
    var red2:Number = what.secondColor >>> (4*4) & 0xFF;
    var green2:Number = what.secondColor >>> (2*4) & 0xFF;
    var blue2:Number = what.secondColor >>> (0*4) & 0xFF;
    var toRed2:Number = c2 >>> (4*4) & 0xFF;
    var toGreen2:Number = c2 >>> (2*4) & 0xFF;
    var toBlue2:Number = c2 >>> (0*4) & 0xFF;
    var redDiff2:Number = (toRed2-red2)/100;
    var greenDiff2:Number = (toGreen2-green2)/100;
    var blueDiff2:Number = (toBlue2-blue2)/100;
 
    what.percent = new Tween(holder, "percent", None.easeNone, 0, 100, time, true);
    what.percent.onMotionChanged = function() {
        ///FIRST COLOR///
        var r = red+(redDiff*holder.percent);
        var g = green+(greenDiff*holder.percent);
        var b = blue+(blueDiff*holder.percent);
        what.firstColor = (r << (4*4)) | (g << (2*4)) | (b << (0*4));
        ///
        ///SECOND COLOR///
        var r2 = red2+(redDiff2*holder.percent);
        var g2 = green2+(greenDiff2*holder.percent);
        var b2 = blue2+(blueDiff2*holder.percent);
        what.secondColor = (r2 << (4*4)) | (g2 << (2*4)) | (b2 << (0*4));
        ////set new gradient
        creafons(what,90,what.firstColor,what.secondColor);
 
    };
}
/////////////////////
Stage.addListener(miListener);
miListener.onResize = function() {
    a = Stage.width;
    b = Stage.height;
    creafons();
};
///////////////////
boto.onPress =function() {
    tweenGradientFondo(Fondo,0xffffff*Math.random(),0xffffff*Math.random(),1);
}

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

Por Aleks1

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Ene 2010 04:22 pm
Creafons recibe cuatro parámetros que no le estás pasando en el onResize ... en AS3 esto no siquiera compilaría. Pásale los argumentos correspondientes cuando lo llamas en el onResize

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2010 11:59 pm
Hola, gracias por la respuesta, he probado como dices pero no me dio resultado, probaré de rescrivir código a ver si me tira, y a malas haré el degrado con un moviclip que este ya en escena y llamare frames.

Por Aleks1

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 07 Ene 2010 12:07 pm
Modifica la última parte así:

Código ActionScript :

Stage.addListener(miListener);
miListener.onResize = function() {
   a = Stage.width;
   b = Stage.height;
   tweenGradientFondo(Fondo, c1, c2, 1);
};
///////////////////
var c1 = 0xffffff*Math.random()
var c2 = 0xffffff*Math.random()
boto.onPress = function() {
   tweenGradientFondo(Fondo,c1,c2,1);
};


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Ene 2010 05:11 pm
Gracias Jorge, creia que el valor de los colores los recogia la variable

Código ActionScript :

Fondo.firstColor = from;
Fondo.secondColor = to;


y no daba con el clavo, tendre que estudiarme mas el código en futuras ocasiones, muchas gracias!

Por Aleks1

6 de clabLevel



 

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.