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
        Administrator

          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.