Array in setInterval

deep_popel

Mitglied
Hallo

Also ich kriege es einfach nicht auf die Reihe!
Habe folgendes:
PHP:
function yscale(mc, inter_nummer) {
	mc.onEnterFrame = function() {
		this._yscale -= 15;
		if (this._yscale < 0) {
			delete this.onEnterFrame;
			//trace(_root["interv" + inter_nummer] + "----");
			clearInterval(_root["interv" + inter_nummer]);
		}
	};
}
inhalt = ["mc1", "mc2", "mc3", "mc4", "mc5", "mc6", "mc7", "mc8"];
zeit = 0;
for (var i = 0; i < inhalt.length; i++) {
	zeit += 100;
	//trace(inhalt[i]);
	_root["interv" + i] = setInterval(yscale, zeit, inhalt[i], i);
	
	//oder auch so!
	//_root["interv" + i] = setInterval(function(){yscale(inhalt[i], i)}, zeit); 
	
	//trace(_root["interv" + i]);
}
So...das einzigste Problem ist, das ich in der for-Schleife mit trace() mir den Array ausgeben lassen kann aber wenn ich ihn bei setInterval einfüge geht garnichts.
Wenn ich alles ohne Schleife einzeln eingebe, geht's. :confused:
PHP:
_root["interv1"] = setInterval(yscale, zeit, mc1, 1);
Es kann eigentlich nichts großes sein, aber ich komme einfach nicht drauf. Möchte auch nicht gerade behaupten, ich hab Ahnung. :rolleyes: Habe auch nichts passendes für dieses Problem gefunden.

Bin über jeden Hilfe dankbar.
 
Hi,

die Übergabe der Intervalle funktioniert problemlos.

Dein Fehler liegt viemehr hier:
Code:
inhalt = ["mc1", "mc2", "mc3", "mc4", "mc5", "mc6", "mc7", "mc8"];
Die Inhalte dieses Arrays sind Strings - und Du übergibst dem Intervall auch diesen String (z.B. "mc1").

Daher kann dieses:
Code:
function yscale(mc, inter_nummer) {
    mc.onEnterFrame = function() {
nicht funktionieren: In "mc" steht ein String, und keine gültige Referenz auf einen MovieClip.

Schreibs entweder so:
Code:
function yscale(mc, inter_nummer) {
    _root["mc"].onEnterFrame = function() {
, oder lege in Deinem Array gleich die Referenzen statt den Instanznamen ab:
Code:
inhalt = [mc1, mc2, mc3, mc4, mc5, mc6, mc7, mc8];

Gruß
.
 
Zurück