/* SuperFades Actionscript 2 class. Can be used for fading any given MovieClip to another color, colorshade or alphalevel based on any given framerate and duration. Version 1.1 Author: Bob Donderwinkel Website: http://www.bdontwerp.nl blog: http://www.bdontwerp.nl/blog/ Date: august,7 2004. SuperFades manual: http://www.bdontwerp.nl/SuperFades/manual/ For more reference visit here: http://stimpson.flashvacuum.net/mt/archives/2004/08/superfades.html */ import com.bdontwerp.SuperFadesClasses.SFCore; class com.bdontwerp.SuperFades extends SFCore{ private var _fadeCalls:Object; private var __fps:Number=24; private var __updateAfterEvent:Boolean=false; public function SuperFades(clip:MovieClip, framerate:Number, update:Boolean){ init(clip, framerate, update); } public function init(clip:MovieClip, framerate:Number, update:Boolean){ super(clip); if(framerate!=undefined) fps=framerate; if(update!=undefined) updateAfterEvent=update; _fadeCalls=new Object(); } // Basic fading methods. More to come. // Fades to an alpha level (%.) public function alphaFade(alpha:Number, time:Number, overRide:Object):Void{ var par=getFadePar(time, overRide); initFade({aa:alpha}, par.steps, par.itvTime, par.updateAfterEvent, "alphaFade"); } // Brightness fade, brightness values (%) -100(darkest) to 100(brightest) public function brightnessFade(brightness:Number, time:Number, overRide:Object):Void{ var par:Object=getFadePar(time, overRide); var br:Number=Math.round(brightness*2.56); initFade({ra:100, rb:br, ga:100, gb:br, ba:100, bb:br}, par.steps, par.itvTime, par.updateAfterEvent, "brightnessFade"); } // Fades to a color tint, will only appear on MovieClips with mutlicolored content (i.e. photos) public function colorTintFade(color:Number, time:Number, overRide:Object):Void{ var rgb:Object=hexToRGB(color); var par=getFadePar(time, overRide); initFade({ra:100, rb:Math.round(rgb.r/2.56), ga:100, gb:Math.round(rgb.g/2.56), ba:100, bb:Math.round(rgb.b/2.56)}, par.steps, par.itvTime, par.updateAfterEvent, "colorShadeFade"); } // Clears any fade which has been apllies to an SuperFades object. public function clearFade(time:Number, overRide:Object):Void{ if(time==undefined){ setTransform({ra:100, rb:0, ga:100, gb:0, ba:100, bb:0, aa:100, ab:0}); return; } var par=getFadePar(time, overRide); initFade({ra:100, rb:0, ga:100, gb:0, ba:100, bb:0, aa:100, ab:0}, par.steps, par.itvTime, par.updateAfterEvent, "clearFade"); } // Fades to a blend full Color. public function fullColorFade(color:Number, time:Number, overRide:Object):Void{ var rgb:Object=hexToRGB(color); var par=getFadePar(time, overRide); initFade({ra:0, rb:rgb.r, ga:0, gb:rgb.g, ba:0, bb:rgb.b}, par.steps, par.itvTime, par.updateAfterEvent, "fullColerFade"); } // Inverts a MovieClip. Not yet fool-proof. public function invertFade(time:Number, overRide:Object):Void{ var par=getFadePar(time, overRide); var trans=getTransform(); for(var prop in trans){ if(prop=="rb" || prop=="gb" || prop=="bb") trans[prop]=trans[prop]==0 ? 255 : 0; else if(prop=="ra" || prop=="ga" || prop=="ba") trans[prop]=trans[prop]==100 ? -100 :100; } initFade(trans, par.steps, par.itvTime, par.updateAfterEvent, "invertFade"); } // Fades according to any given color transform object. public function transformFade(fadeObj:Object, time:Number, overRide:Object):Void{ var par=getFadePar(time, overRide); initFade(fadeObj, par.steps, par.itvTime, par.updateAfterEvent, "colorTransformFade"); } public function setBrightness(brightness:Number):Void{ var br:Number=Math.round(brightness*2.56); _colObj.cancelFade(); //cancels any running fade. _colObj.setTransform({ra:100, rb:br, ga:100, gb:br, ba:100, bb:br}); } public function setTint(color:Number):Void{ var rgb:Object=hexToRGB(color); _colObj.cancelFade(); _colObj.setTransform({ra:100, rb:Math.round(rgb.r/2.56), ga:100, gb:Math.round(rgb.g/2.56), ba:100, bb:Math.round(rgb.b/2.56)}); } // Returns the current hex color value apllied to an SuperFades object public function getHex():String{ return getRGB().toString(16); } // converts a hexidecimal color vlaue to an object with r,g,b properties static function hexToRGB(hex:Number):Object{ var r,g,b:Number; return({r:r=(hex>>16), g:g=(hex-(r<<16))>>8, b:hex-(r<<16)-(g<<8)}); } // converts rgb values to a hexidecimal color value; static function rgbToHex(r:Number, g:Number, b:Number):Number{ return(r<<16 | g<<8 | b); } //-- Porting methods for the basic Color class methods public function setRGB(color:Number):Void{ _colObj.cancelFade(); _colObj.setRGB(color); } public function setTransform(trObj:Object):Void{ _colObj.cancelFade(); _colObj.setTransform(trObj); } public function getRGB():Number{ return _colObj.getRGB(); } public function getTransform():Object{ return _colObj.getTransform(); } //-- // Setup and returns an object with all the needed fade parameters. private function getFadePar(time:Number, overRide:Object):Object{ var par=new Object(); var framerate=overRide.fps!=undefined ? overRide.fps : fps; par.steps=Math.floor((time/1000)*framerate); par.itvTime=Math.floor(1000/framerate); par.updateAfterEvent=overRide.updateAfterEvent!=undefined ? overRide.updateAfterEvent : updateAfterEvent; return par; } // Sets a call for a fading method for later usage, based on a callID, allong with the right parameters. public function setFadeCall(callID:String, fadeMethod:String, fadePar:String, duration:Number, override:Object):Void{ var fadeCall=_fadeCalls[callID]=new Object(); var base=this; fadeCall.call=function(){ base[fadeMethod](fadePar, duration, override); } } // Calls a stored fade, bases on it's callID. public function callFade(callID:String):Void{ _fadeCalls[callID].call(); delete _fadeCalls[callID]; } //-- Getter/Setters for framerate and updateAfterEvent public function set fps(fps:Number){__fps=fps;} public function set updateAfterEvent(update:Boolean){__updateAfterEvent=update;} public function get fps(){return __fps;} public function get updateAfterEvent(){return __updateAfterEvent;} }