Prototypes für abbremsende Farbtransformationen
von Tobias Menzel
am 02.04.07 um 18:02 (389 Hits)
Hi,
diese Prototypes verwende ich in vielen Projekten, wenn es darum geht, Objekte per Farbtransformation zu verändern. Mögliche Einsatzzwecke sind Hover-Effekte, oder das Ein- und Ausblenden (nicht nur) über die Alphatransparenz.
Die Parameter für die fadeTo-Methode sind:
- r - Rotanteil der Transformation (-255 bis 255)
- g - Grünanteil der Transformation (-255 bis 255)
- b - Blauanteil der Transformation (-255 bis 255)
- a - Alphaanteil der Transformation (-255 bis 255)
- s - Faktor für die Abbremsung (1 = rapide, z.B. 20 = recht langsam)
- _cb - Referenz auf eine Callback-Funktion, die ausgeführt wird, sobald die Transformation abgeschlossen ist.
Code actionscript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 MovieClip.prototype.fadeTo = function(r, g, b, a, s, _cb) { var cl = new Color(this); var tr = cl.getTransform(); if (r == undefined) r = tr.rb; if (g == undefined) g = tr.gb; if (b == undefined) b = tr.bb; if (a == undefined) a = tr.ab; this["MC_fadeTo_slider"].removeMovieClip(); var slider = this.createEmptyMovieClip("MC_fadeTo_slider", this.getNextHighestDepth()); slider.onEnterFrame = function() { var ro = tr.rb; var go = tr.gb; var bo = tr.bb; var ao = tr.ab; tr.rb += (r - tr.rb) / s; tr.gb += (g - tr.gb) / s; tr.bb += (b - tr.bb) / s; tr.ab += (a - tr.ab) / s; cl.setTransform(tr); ro = Math.abs(tr.rb - ro); go = Math.abs(tr.gb - go); bo = Math.abs(tr.bb - bo); ao = Math.abs(tr.ab - ao); if (ro < 1 && go < 1 && bo < 1 && ao < 1) { tr.rb = r; tr.gb = g; tr.bb = b; tr.ab = a; cl.setTransform(tr); _cb(); this.removeMovieClip(); } } } MovieClip.prototype.setTo = function(r, g, b, a) { var cl = new Color(this); var tr = cl.getTransform(); if (r == undefined) r = tr.rb; if (g == undefined) g = tr.gb; if (b == undefined) b = tr.bb; if (a == undefined) a = tr.ab; this["MC_fadeTo_slider"].removeMovieClip(); tr.rb = r; tr.gb = g; tr.bb = b; tr.ab = a; cl.setTransform(tr); }
Grüße,
Datic






