tutorials.de Buch-Aktion 05/2012
RSS-Feed anzeigen

Datics Blog

Prototypes für abbremsende Farbtransformationen

Bewerten
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

"Prototypes für abbremsende Farbtransformationen" bei Twitter speichern "Prototypes für abbremsende Farbtransformationen" bei Facebook speichern

Kategorien
Codeschnipsel

Kommentare