Verzögerung nach Preloader

Z-r0

Erfahrenes Mitglied
Hallo zusammen,

Ich habe versucht nach einem Preloader ne kurze Zeitverzögerung einzubauen. Da soll nach wenigen Sekunden dann zum Mainmovie gesprungen werden.
Das Problem ist, dass die Variable i nicht aufhört sich zu erhöhen. Das bedeutet doch, dass das Intervall nicht aufhört oder?
PHP:
var i:Number=0;

function delay(){
				i++;
				clearInterval(iv);
				trace(i);
				if (i>=40){
					clearInterval(iv);
					_root.gotoAndStop(2);
				}
}


onEnterFrame=function(){
	var bytes = Math.round(_root.getBytesTotal());
	var bytes_loaded = Math.round(_root.getBytesLoaded());
	var getpercent = bytes_loaded/bytes;
	if (bytes_loaded == bytes) {
		_root.preloader.loadText = Math.round(getpercent*100)+"%";
		_root.preloader.loadBg = Math.round(getpercent*100);
		var iv=setInterval(this,"delay",2000);
		
													
	}else {
		_root.gotoAndStop(1);
		_root.preloader.loadText = Math.round(getpercent*100)+"%";
		_root.preloader.loadBg = Math.round(getpercent*100);
						
		
	}
}
 
Hi,

1. deklarierst Du die Variable "iv" als Member der onEnterFrame-Methode - daher ist sie auf der kompletten Zeitleiste (und damit auch in "delay") nicht bekannt.

2. beendest Du die onEnterFrame-Methode nicht, so dass das Intervall immer neu erstellt wird.

3. Macht es Sinn, die Methode "delay" mehrmals durchlaufen zu lassen? Mit dieser Methode wartest Du 40 x 2 Sekunden, bis der Film zum nächsten Frame springt ...

Gruß
.
 
Hi Tobias,

Wie mache ich das mit der Variable richtig?
Und wie beendet man die onEnterFrame methode?

Und zu 3. Also die Intervall Duration auf z.b. 20000 setzen und die if condition auf if(i>=4) z.b.? Hab eigentlich erstmal nur irgendwelche Werte eingegeben um zu sehen ob das auch klappt...
 
Hi,

1. ausserhalb aller Funktionen deklarieren.

2. mit "delete this.onEnterFrame".

3. Warum überhaupt die delay-Funktion mehrmals aufrufen? Du willst doch nur eine Verzögerung, da reicht ein Intervallaufruf völlig. Mit "20000" würdest Du übrigens 20 Sekunden warten. ;)
Code:
var iv = 0; // hier deklarieren!

function delay() {
  clearInterval(iv);
  gotoAndPlay("woanders");
}

this.onEnterFrame = function() {
  // hier Preloader-Kram
  if (geladen == gesamt) {
    delete this.onEnterFrame; // onEnterFrame-Methode löschen
    iv = setInterval(this, "delay", 2000);
  }
}

Gruß
.
 
Zurück