tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
2000
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
    41
    42
    43
    
    Object.prototype.obj_setTo = function (s:Number, d:Number, ms: Number):Void {
        //
        if (this.obj_setToId) {
            clearInterval(this.obj_setToId);
        }
        
        
        var e = 3; 
        var pNr = Math.floor((arguments.length-2)/2);
        var pAll = [];
        //
        for (var i = 0; i < pNr; i++) {
            pAll[i] = {p: arguments[e], t: arguments[e+1]}
            e += 2;
        }
        //
        var i = d;
        
        this.executeObj_setTo = function () {
            if (i>0) {
                i--;
            } else {
                for (var u = 0; u < pAll.length; u++) { 
                    var p = pAll[u].p;
                    var t = pAll[u].t;
                    var dif = t-this[p];
                    dif *= s;
                    this[p] += dif;
                    if (this[p] == this[p +"CTRL"]) {
                        pAll.splice(u, 1);
                    } else {
                        this[p +"CTRL"] = this[p];
                    }
        
                }
                if (pAll.length < 1) {
                    clearInterval(this.obj_setToId);
                }
            }
        };
        
        this.obj_setToId = setInterval(this, "executeObj_setTo", ms);
    }

    HINWEIS:
    Da alle Klassen in ActionScript von der Object-Klasse erben, kann dieser Prototype auch für alle Klassen verwendet werden. Ausserdem ist zu beachten, dass bei einem LoadVars.send oder sendAndLoad diese Funktion auch als Member des LoadVars-Objekts gilt und folglich mitgeschickt wird.

    Beschreibung:
    Ändert eine numerische Eigenschaft eines Objects (z.B. Koordinaten, Schriftgrösse etc.) vom aktuellen Wert schrittweise auf den gewünschten Wert. Dabei sind die Wertunterschiede
    von Schritt zu Schritt abnehmend.

    Code :
    1
    
    meinObject.obj_setTo (Geschwindigkeit, Verzögerung, Intervall [Eigenschaft_1, Zielwert_1], ...[Eigenschaft_n, Zielwert_n])
    Geschwindigkeit: Number, wobei 0 < Geschwindigkeit < 1. Beschreibt Geschwindigkeit der Animation.
    Verzögerung: Number, Anzahl Intervalle, die abgewartet werden, bevor die Animation beginnt.
    Intervall: Number, Zeitabstand in Millisekunden zwischen den einzelnen Funktionsabläufen. Hat Einfluss auf die Geschwindigkeit.
    Eigenschaft: String, Eigenschaft des Objects, 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
    43
    
    Object.prototype.obj_elasticTo = function(s:Number, e: Number, d:Number, ms: Number):Void {
        //
        if (this.obj_elasticToId) {
            clearInterval(this.obj_elasticToId);
        }
        
        
        var k = 4; 
        var pNr = Math.floor((arguments.length-3)/2);
        var pAll = [];
        //
        for (var i = 0; i < pNr; i++) {
            pAll[i] = {p: arguments[k], t: arguments[k+1], step: 0}
            k += 2;
        }
        //
        var i = d;
        this.executeObj_elasticTo = function() {
            if (i>0) {
                i--;
            } else {
                for (var u = 0; u < pAll.length; u++) { 
                    var p = pAll[u].p;
                    var t = pAll[u].t;
                    var dif = t-this[p];
                    pAll[u].step += dif*s;
                    pAll[u].step *= e;
                    this[p] += pAll[u].step;
                    if (this[p] == this[p +"CTRL"]) {
                        pAll.splice(u, 1);
                        
                    } else {
                        this[p +"CTRL"] = this[p];
                    }
        
                }
                if (pAll.length < 1) {
                    clearInterval(this.obj_elasticToId);
                }
            }
        };
        this.obj_elasticToId = setInterval(this, "executeObj_elasticTo", ms);
    };

    HINWEIS:
    Da alle Klassen in ActionScript von der Object-Klasse erben, kann dieser Prototype auch für alle Klassen verwendet werden. Ausserdem ist zu beachten, dass bei einem LoadVars.send oder sendAndLoad diese Funktion auch als Member des LoadVars-Objekts gilt und folglich mitgeschickt wird.

    Beschreibung:
    Ändert eine numerische Eigenschaft eines Objects (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
    
    meinObject.obj_elasticTo (Geschwindigkeit, Elastizität, Verzögerung, Intervall, [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.
    Intervall: Number, Zeitabstand in Millisekunden zwischen den einzelnen Funktionsabläufen. Hat Einfluss auf die Geschwindigkeit.
    Eigenschaft: String, Eigenschaft des Objects, 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 (14.10.06 um 16:08 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: 23.02.06, 15:59
  5. Elastische Oberfläche
    Von 3Dnavigator im Forum Photoshop
    Antworten: 14
    Letzter Beitrag: 01.05.05, 20:48