Timer zählt falsch

Startseite Foren Deutsches LiveCode-Forum Timer zählt falsch

Schlagwörter: 

Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #29142
      duiJM
      Teilnehmer

      Hallo zusammen,

      ich versuche in ein Spiel einen Timer einzubauen, der nach jeder Sekunde um ein runter zählt, aber wo ich auch den Aufruf hinein packe (hab die alle drin gelassen), es wird entweder gar nicht, oder sehr schnell (also keine Sekunde) runter gezählt.
      Ich verzweifel gerade an mir 😉

      Hier der Code Ausschnitt:

      on Spielloop — das permanent ablaufende Spiel

      downTimer — das soll den Timer aufrufen
      send „downTimer“ to me in 1000 milliseconds — diese Zeile war ein Versuch

      — Punkte
      Punktezählen

      if Spielläuft = true then
      send Spielloop to me in 20 milliseconds — hier wird die Spielschleife immer wieder ausgeführt
      –send „downTimer“ to me in 1000 milliseconds (ein weiterer Versuch)
      end if
      end Spielloop

      on downTimer — hier soll der Timer laufen und aktualisieren
      subtract 1 from vTimer — vTimer ist die Zahl der Sekunden, die runter zählen sollen
      put „Zeit: “ & vTimer into fld „fldTimer“
      if vTimer = 0 then
      Spielstoppen
      — else
      — send „downTimer“ to me in 1000 Milliseconds (versuch)

      end if
      –send „downTimer“ to me in 1000 Milliseconds (Versuch)
      end downTimer

    • #29144
      Klaus Major
      Verwalter

      Hi duijM,

      Du musst den Timer von AUSSERHALB des Spielloops aufrufen!

      Sonst wird er ja alle 20 Millisekunden wieder aufgerufen
      und irgendwann explodiert Dein Rechner! 😀

      Also in dem Handler, in dem Du den Loop aufrufst, sollte es ungefähr so aussehen:

      on wasauchimmer
         ## ...
         
         downTimer
         Spielloop
      end wasauchimmer
      
      ###############################################
      
      on Spielloop -- das permanent ablaufende Spiel
         -- Punkte
         Punktezählen
         if Spielläuft = true then
            send "Spielloop" to me in 20 milliseconds 
            -- hier wird die Spielschleife immer wieder ausgeführt
         end if
      end Spielloop
      
      on downTimer -- hier soll der Timer laufen und aktualisieren
         subtract 1 from vTimer
         put "Zeit: " & vTimer into fld "fldTimer"
         if vTimer = 0 then
            Spielstoppen
         else
             send "downTimer" to me in 1 secs
         end if
      end downTimer

      Gruß

      Klaus

    • #29145
      duiJM
      Teilnehmer

      Hallo Klaus,

      GREAT!

      Das war es. Vielen Dank.

Ansicht von 2 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.