tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
1997
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jun 2004
    Ort
    Zürich
    Beiträge
    1.359
    Blog-Einträge
    8
    ACHTUNG: Dieser Code ist in AS 2.0 geschrieben und funktioniert nur für Version MX 2004 bzw. Player 7 und höher!

    Code :
    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
    
    MovieClip.prototype.mc_setTo = function(s:Number, d:Number): Void {
        var u: Number = this.getNextHighestDepth();
        if (!this.mc_setToCT) {
            this.createEmptyMovieClip("mc_setToCT", u);
        }
        //
        var e: Number = 2; 
        var pNr: Number = Math.floor((arguments.length-2)/2);
        var pAll: Array = [];
        //
        for (var i: Number = 0; i < pNr; i++) {
            pAll[i] = {p: arguments[e], t: arguments[e+1]}
            e += 2;
        }
        //
        var i: Number = d;
        this.mc_setToCT.onEnterFrame = function() { 
            if (i>0) {
                i--;
            } else {
                for (var u: Number = 0; u < pAll.length; u++) { 
                    var p: String = pAll[u].p;
                    var t: Number = pAll[u].t;
                    var dif: Number = t-this._parent[p];
                    dif *= s;
                    this._parent[p] += dif;
                    if (this._parent[p] == this[p +"CTRL"]) {
                        pAll.splice(u, 1);
                    } else {
                        this[p +"CTRL"] = this._parent[p];
                    }
        
                }
                if (pAll.length < 1) {
                    delete this.onEnterFrame;
                    this.removeMovieClip();
                }
            }
        };
    };
    Beschreibung:
    Ändert eine numerische Eigenschaft eines MovieClips (z.B. Koordinaten) vom aktuellen Wert schrittweise auf den gewünschten Wert. Dabei sind die Wertunterschiede von Schritt zu Schritt
    abnehmend.
    Code :
    1
    
    meinMovieClip.mc_setTo (Geschwindigkeit, Verzögerung, [Eigenschaft_1, Zielwert_1], ...[Eigenschaft_n, Zielwert_n])

    Geschwindigkeit: Number, wobei 0 < Geschwindigkeit < 1. Beschreibt Geschwindigkeit der Animation
    Verzögerung: Number, Anzahl Frames, die abspielen, bevor die Animation beginnt
    Eigenschaft: String, Eigenschaft des MovieClips, die verändert werden soll. Nach jedem Eigenschaft-Parameter MUSS ein Zielwert angegeben werden, ansonsten schlägt die Funktion fehl.
    Zielwert: Number, Wert auf den die vorhergehende Eigenschaft gesetzt werden soll.



    Code :
    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
    
    MovieClip.prototype.mc_elasticTo = function(s:Number, e: Number, d:Number): Void {
        var u: Number = this.getNextHighestDepth();
        if (!this.mc_elasticToCT) {
            this.createEmptyMovieClip("mc_elasticToCT", u);
        }
        //
        var k: Number = 3; 
        var pNr: Number = Math.floor((arguments.length-3)/2);
        var pAll: Array = [];
        //
        for (var i: Number = 0; i < pNr; i++) {
            pAll[i] = {p: arguments[k], t: arguments[k+1], step: 0}
            k += 2;
        }
        //
        var i: Number = d;
        this.mc_elasticToCT.onEnterFrame = function() {
            if (i>0) {
                i--;
            } else {
                for (var u: Number = 0; u < pAll.length; u++) { 
                    var p: String = pAll[u].p;
                    var t: Number = pAll[u].t;
                    var dif = t-this._parent[p];
                    pAll[u].step += dif*s;
                    pAll[u].step *= e;
                    this._parent[p] += pAll[u].step;
                    if (this._parent[p] == this[p +"CTRL"]) {
                        pAll.splice(u, 1);
                        
                    } else {
                        this[p +"CTRL"] = this._parent[p];
                    }
        
                }
                if (pAll.length < 1) {
                    delete this.onEnterFrame;
                    this.removeMovieClip();
                }
            }
        };
    };

    Beschreibung:
    Ändert eine numerische Eigenschaft eines MovieClips (z.B. Koordinaten) vom aktuellen Wert schrittweise auf den gewünschten Wert. Die Wertunterschiede sind zuerst zunehmend, bis der Zielwert
    überschritten ist. Danach nähert sich der aktuelle Wert dem Zielwert immer an, um ihn zu überschreiten, bis sich die Differenz vernachlässigbar ist. Dies gibt einen elastischen Effekt.

    Code :
    1
    
    meinMovieClip.mc_elasticTo (Geschwindigkeit, Elastizität, Verzögerung, [Eigenschaft_1, Zielwert_1], ...[Eigenschaft_n, Zielwert_n])
    Geschwindigkeit: Number, wobei 0 < Geschwindigkeit < 1. Beschreibt Geschwindigkeit der Animation
    Elastizität: Number, wobei 0 < Elastizität < 1. Beschreibt das Ausmass der elastischen Schwingung
    Verzögerung: Number, Anzahl Frames, die abspielen, bevor die Animation beginnt
    Eigenschaft: String, Eigenschaft des ovieClips, die verändert werden soll. Nach jedem Eigenschaft-Parameter: MUSS ein Zielwert angegeben werden, ansonsten schlägt die Funktion fehl.
    Zielwert: Number, Wert auf den die vorhergehende Eigenschaft gesetzt werden soll.
    Geändert von luke_the_duke (28.09.06 um 11:30 Uhr)
     

Ähnliche Themen

  1. Prototypes, Rico,..
    Von notebook20000 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 14.04.07, 10:23
  2. Prototypes zum Erweitern der String-Klasse [ab Flash 7]
    Von Tobias Menzel im Forum Flash FAQ
    Antworten: 0
    Letzter Beitrag: 18.12.06, 11:22
  3. [MOVIECLIP] Linien zeichnen mit Prototypes
    Von luke_the_duke im Forum Flash FAQ
    Antworten: 0
    Letzter Beitrag: 29.09.06, 16:11
  4. Antworten: 0
    Letzter Beitrag: 28.09.06, 11:27
  5. Elastische Oberfläche
    Von 3Dnavigator im Forum Photoshop
    Antworten: 14
    Letzter Beitrag: 01.05.05, 20:48