| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
| SetInterval Problem mit Framerate
Hallo, ich habe ein .fla, in dem ich gerne alle 12 Minuten einen Sound abspielen möchte. PHP-Code: PHP-Code: Weiterhin habe ich rausgefunden, dass sich die Geschwindigkeit der ablaufenden Uhr je nach Framerate verändert. Gibt es da eine vernünftige Lösung für?
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ |
| | |
| | #3 (permalink) |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
| Hallo, diese Funktion rufe ich zuletzt in clock() auf. Aber clock() wird ja nur jede Sekunde aufgerufen... allerdings hängt das ja aber irgendwie mit der Framerate zusammen... ich kann sie so einstellen, dass meine Uhr schneller oder langsamer als echte Sekunden läuft.
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ |
| | |
| | #4 (permalink) |
| class public{} Registriert seit: Feb 2004 Ort: dessau
Beiträge: 1.406
|
ja und gnénau das m acht updateAfterEvent....es aktualisiert den den interval....falls dei fps zu tief ist....wie is denn deine fps bzw..wie schut denn dein script(die functionen die im interval aufgerufen werden) aus? Geändert von public (23-09-2007 um 23:29 Uhr) |
| | |
| | #5 (permalink) |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
|
updateAfterEvent() sorgt doch nur für eine Aktualisierung der Bühne vor dem standardmäßigen Neuzeichnen der Bühne per Framerate ![]() Das ist aber auch gar nicht mein Problem. Mein Problem liegt darin, dass meine dargestelle 12 Minuten Uhr nicht genau 12 Minuten braucht und das ganz stark davon abhängt, wie hoch ich die Framerate einstelle. 1 Bps = Meine Uhr ist pro Minute 30 Sekunden zu langsam 12 Bps = Meine Uhr ist pro Minute 3 Sekunden zu langsam 100 Bps (die mein Rechner sicher nicht schafft) = Meine Uhr geht pro Minute grob richtig, aber es wohl auch noch n Unterschied drin, weil nach z.B. einer Stunde Laufzeit noch 15 Sekunden auf meiner Uhr zu sehen sind, aber die andere Funktion bereits durch das andere Intervall aufgerufen wird. Edit: ja also die eine funktion spielt eigentlich nur einen sound ab und die andere sorgt dafür, dass meine "uhr" von 00 auf 59 springt usw... jo. Edit 2: Ich könnte natürlich einfach in clock() den Sound abspielen, wenn das time_limit erreicht ist, aber dann habe ich immer noch das Problem, dass die Minuten nicht ECHTEN Minuten entsprechen und dass das wahrscheinlich auch noch stark vom Rechner abhängig sein dürfte!?
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ Geändert von pebbo (23-09-2007 um 23:53 Uhr) |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
setInterval löst keinen interrupt aus, sondern meldet eine funktion nur an, ab jetzt soll sie, wenn nichts anderes drann ist, abgearbeitet werden. somit sind zeitliche verzögerungen nach hinten möglich/zu erwarten. was ich noch nie untersucht habe ist, wie bzw. wann wird das folgende interval gestartet? wenn die intervalzeit immer ab dem ausführen der funktion neu gesetzt wird, dann ist ein immer grösser werdender zeitversatz die logische folge. probier halt mal folgendes: das interval immer beenden und erst spätmöglichst neu starten unter berücksichtigung der aktuellen zeit. siehe http://www.seibsprogrammladen.de/fra...thmen/Interval Zur vollen Zeit sinngemäss, nicht die uhr nach jedem setinterval eine sekunde vordrehen, sondern immer nur die systemzeit anzeigen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (24-09-2007 um 03:06 Uhr) |
| | |
| | #7 (permalink) | |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
| Zitat:
Ich habe jetzt auch überlegt, im Moment des Starts die Systemzeit zu speichern und dann davon ausgehen in einer Funktion, die in einem Intervall alle 10ms aufgerufen wird, die in dem Moment aktuelle Systemzeit zu nehmen und zu schauen, wie groß die Differenz ist und entsprechend die Uhr ändert, oder auch nicht. Würde das dann genauer sein?
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ | |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| so kann man einen rechner auch zu tote arbeiten lassen. ja probier es halt, wenn du meinst und wenn du meinen vorschlag nicht übernehmen willst.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #9 (permalink) | |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
| Zitat:
![]() Edit: Es reicht ja auch, die Funktion 2x die Sekunde aufzurufen... ich versuche mich mal...
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ Geändert von pebbo (24-09-2007 um 17:32 Uhr) | |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
clock_interval = setInterval(clock, 1000, time_limit); // function clock(){ var aktuelle_zeit=getTimer(); // danach die uhr stellen // da ist es egal, wie genau/ungenau setInterval ist. } timer_interval = setInterval(timer, (time_limit * 60000)); // function timer(){ clearInterval(timer_interval); ... timer_interval = setInterval(timer, restzeit); /* restzeit siehe mein link restzeit = zeit bis zur nächsten vollen 12 minute unter berücksichtigung, das schon zeit vergangen ist, bis dieses setInterval neu gesetzt wird. was vermutlich der zeit entpricht, warum bei dir die zeiten immer länger werden. */ }
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (24-09-2007 um 18:02 Uhr) |
| | |
| | #11 (permalink) |
| Gargamel Registriert seit: Apr 2005 Ort: Duisburg
Beiträge: 41
|
Kurze Info und Danke an alle Helfer ![]() Ich habe jetzt ein Intervall, was alle 100ms eine Funktion startet, die dann die Millisekunden checkt und entsprechend die Uhr um eine Sekunde runterzählt, wenn eben diese verstrichen ist. Läuft 1a. Also falls noch jemand einen Blindtimer für die heimische Pokerrunde braucht... http://www.pebbo.de/News/#Pokertimer-49
__________________ Code:
\_/
m00h (__) -(_)-
\ ~Oo~___ / \
(..) |\
________|_|_|__________ Geändert von pebbo (28-09-2007 um 00:46 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |