steckl: Rekursion mit Timeout

Beitrag lesen

Hi,

danke fuer die schnelle Antwort.

Ob du das ganze per setTimeout noch mal aufrufst, machst du doch aber von rek abhängig ... also wenn das nicht der Fall ist, Flag zurücksetzen?

Ganz so einfach ist es nicht, aber es waere schon gegangen.Ich stand irgendwie auf dem Schlauch. Aber mit setTimeout finde ich es eh schoener. Danke fuer den Tipp.

Alternative wäre vielleicht, statt setTimeout gleich setInterval zu nutzen. Wenn es dann gerade ein aktives Interval gibt, starte kein neues.

Guter Tipp, so geht es jetzt:

  
       function nachRechts(speed,rek)  
      {  
          init();  
  
          if((rek==1))  
          {  
              if(horInterval)  
              {  
                  window.clearInterval(horInterval);  
              }  
              horInterval = window.setInterval("nachRechts("+speed+",2)",timeout);  
          }  
  
          if(((left+width) < fensterbreite) && (stop == 0))  
          {  
              if(!pause)  
              {  
                  left += speed;  
                  ele.style.left = left + "px";  
              }  
  
              if( (rek == 1) && (!horInterval) )  
              {  
                  window.setInterval("nachRechts("+speed+",2)",timeout);  
              }  
          }  
          else  
          {  
              window.clearInterval(horInterval);  
              horInterval = 0;  
          }  
  
          showInfos();  
      }  

Und das ganze von der Nutzung globaler Variablen zu befreien, also objektorientiert umzusetzen, wäre auch noch schön.

In diesem kleinen Beispiel ist das wohl nicht so schlimm, da es noch relativ uebersichtlich ist, aber prinzipiell hast du schon recht.
Wie macht man das am besten? Ein globales Objekt, das dann die ganzen globalen Variablen als Attribute hat? Oder das Objekt jedesmal mitschleifen?

Um das ganze komplett OO zu designen (mit Methoden statt Funktionen) fehlen mir wohl noch Kenntnisse ueber OO-Design. Ich will das zwar lernen, aber lieber erstmal in einer anderen Sprache wie C++ oder Java.

mfG,
steckl