setInterval klappt nur, wenn Objekt auf der Zeitleiste ist.

p-flash

Erfahrenes Mitglied
Hi,

ich habe diese Funktionen:

PHP:
	public function start():Void
  	{
  		checkInterval = setInterval(this, "check", 100);
  	}
  	
  	public function stopCheck():Void
  	{
  		clearInterval(checkInterval);
  	}

Im Kontruktor der Klasse wird start() aufgerufen.

Wenn ich das Objekt in einer anderen Klasse erstelle dann klappt setInterval nicht. Nur wenn ich es auf der Zeitleiste erstelle.

EIne alternative wäre

PHP:
	public function start(obj:HitTester):Void
  	{
  		obj.checkInterval = setInterval(obj, "check", 100);
  	}
  	
  	public function stopCheck(obj:HitTester):Void
  	{
  		clearInterval(obj.checkInterval);
  	}

Aber dann müsste ich immer einen Parameter übergeben. Kennt jemand eine bessere Lösung?

Danke.

p-flash
 
Hi,

auf die Schnelle und Ungetestet: Du rufst Deinen eigenen Konstruktor in einem Intervall auf? Bestenfalls bekommst Du dann jede Menge überlagernder Intervalle, die sich nicht mehr löschen lassen, da Du die Referenzen überschreibst (nehme ich mal an).

Vielleicht kannst Du einmal beschreiben, was Du genau erreichen willst - eine komfortable Lösung gibt es sicherlich.

Gruß
.
 
Also ich habe eine Klasse HitTester die folgende Methoden hat:

PHP:
 public function HitTester()
 {
 	start();
 }
 
 public function start():Void
{
	checkInterval = setInterval(this, "check", 500);
}

public function check():Void { // und so weiter }

Die Klasse SelfPingPong sieht so aus:

PHP:
public function SelfPingPong()
{
	ht = new HitTest();
}
 
 public static function main():Void
 {
 	var spp:SelfPingPong = new SelfPingPong();
 }

Rufe ich das Script auf der Zeitleiiste so auf:

PHP:
var spp:SelfPingPong = new SelfPingPong();

läuft alles und das Interval auch.

Rufe ich es so auf:

PHP:
SelfPingPong.main();

klappt es nicht.
 
Ah - diese setInterval-Syntax verwendest Du (sorry für meine Verwirrung).

Hmm - scheint irgendwas mit der statischen Methode zu sein - wird die Funktion main() (und der Konstruktur) denn ausgeführt, wenn Du sie so aufrufst (trace-Aktion)?

Was mir noch auffällt: Deine andere Klasse heisst "HitTester" - Du instanzierst in SelfPingPong aber "hitTest". Ist das ein Vertipper?

BTW: Wozu überhaupt das Ding mit dem Konstruktor - kannst Du den hitTester nicht direkt in der main-Funktion instanzieren?

Gruß
.
 
Danke, habe das Problem schon gelöst. Wenn ich die Instanz in ein Klassen oder Objekt-Attribut speicher, klappt es.

p-flash
 
Zurück