 Flash 8
import mx.transitions.Tween;
import mx.transitions.easing.*;
bkg = this.createEmptyMovieClip("myBkg", this.getNextHighestDepth());
setGradient(bkg,90,0xffffff,0xffffff);
tweenGradientBkg(bkg,0xffffff*Math.random(),0xffffff*Math.random(),1);
function tweenGradientBkg(what:MovieClip, c1:Number, c2:Number, time:Number) {
what.percent.stop;
delete what.percent;
var holder:Object = new Object();
holder.percent = 0;
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;
/////// 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() {
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));
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));
setGradient(what,90,what.firstColor,what.secondColor);
};
what.percent.onMotionFinished = function() {
tweenGradientBkg(bkg,0xffffff*Math.random(),0xffffff*Math.random(),1);
};
}
function setGradient(bkg:MovieClip, angle:Number, from:Number, to:Number, alfa1:Number, alfa2:Number, rat1:Number, rat2:Number) {
bkg.firstColor = from;
bkg.secondColor = to;
with (bkg) {
var angle:Number = angle || 90;
var wSize:Number = Stage.width;
var hSize:Number = Stage.height;
var fillType:String = "linear";
var colors:Array = [from, to];
var alphas:Array = [alfa1 || 100, alfa2 || 100];
var ratios:Array = [rat1 || 0, rat2 || 255];
var matrix:Object = {matrixType:"box", x:0, y:0, w:wSize, h:hSize, r:(angle/180*Math.PI)};
lineStyle(1,0xFFFFFF,0);
beginGradientFill(fillType,colors,alphas,ratios,matrix);
lineTo(wSize,0);
lineTo(wSize,hSize);
lineTo(0,hSize);
lineTo(0,0);
endFill();
}
}
|
Tout d’abord merci pour ce blog très intéressant, je me régale…cependant j’essaye de cumuler des effets avec les tweens mais en vain!!!
Mon problème est le suivant :
j’ai créé un bt (bt1) à qui je fais faire certaines transition « import mx.transitions.Tween; » formidable d’ailleurs!
et dans ce bt (bt1) j’ai un fond (back)à qui je veux donner une couleur au survol de la souris « import mx.transitions.TweenRGB ». Mais pas moyen, si j’annule la classe que j’ai administré à ‘bt1′ la classe rgb fonctionne et inversement….aurais tu une idée afin de cumuler les deux classes?
Encore merci pour ce blog il est vraiment bien expliqué…bonne continuation.