Prototypes für normale und elastische Eigenschaftsänderungen

luke_the_duke

Erfahrenes Mitglied
ACHTUNG: Dieser Code ist in AS 2.0 geschrieben und funktioniert nur für Version MX 2004 bzw. Player 7 und höher!

Code:
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:
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:
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:
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.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück